用asp.net实现将上传的图片变小存入数据库
点击次数:19 次 发布日期:2008-11-26 15:48:56 作者:源代码网
|
源代码网推荐 <%@ Page Language="vb" AutoEventWireup="false" Codebehind="changimage.aspx.vb" Inherits="uploadimage.changimage"%> 源代码网推荐 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 源代码网推荐 <HTML> 源代码网推荐 <HEAD> 源代码网推荐 <title></title> 源代码网推荐 <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0"> 源代码网推荐 <meta name="CODE_LANGUAGE" content="Visual Basic 7.0"> 源代码网推荐 <meta name="vs_defaultClientScript" content="JavaScript"> 源代码网推荐 <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> 源代码网推荐 </HEAD> 源代码网推荐 <body MS_POSITIONING="GridLayout"> 源代码网推荐 <form id="Form1" method="post" enctype="multipart/form-data" runat="server"> 源代码网推荐 <FONT face="宋体"><INPUT id="File1" style="Z-INDEX: 101; LEFT: 291px; WIDTH: 180px; POSITION: absolute; TOP: 119px; HEIGHT: 45px" type="file" size="10" name="File1" runat="server"> <asp:Button id="cmdupload" style="Z-INDEX: 103; LEFT: 402px; POSITION: absolute; TOP: 194px" runat="server" Text="上传图片" Width="81px" Height="42px"></asp:Button> 源代码网推荐 </FONT> 源代码网推荐 </form> 源代码网推荐 </body> 源代码网推荐 </HTML> 源代码网推荐 changimage.aspx.vb中代码如下: 源代码网推荐 Public Class changimage 源代码网推荐 Inherits System.Web.UI.Page 源代码网推荐 Protected WithEvents cmddemo As System.Web.UI.WebControls.Button 源代码网推荐 Protected WithEvents cmdupload As System.Web.UI.WebControls.Button 源代码网推荐 Protected WithEvents SqlConn As System.Data.SqlClient.SqlConnection 源代码网推荐 Protected WithEvents SqlComm As System.Data.SqlClient.SqlCommand 源代码网推荐 Protected WithEvents File1 As System.Web.UI.HtmlControls.HtmlInputFile #Region " Web Form Designer Generated Code " "This call is required by the Web Form Designer. 源代码网推荐 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() 源代码网推荐 Me.SqlConn = New System.Data.SqlClient.SqlConnection() 源代码网推荐 Me.SqlComm = New System.Data.SqlClient.SqlCommand() End Sub Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init 源代码网推荐 Form Designer 源代码网推荐 InitializeComponent() 源代码网推荐 End Sub #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 源代码网推荐 End Sub Private Sub cmdupload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdupload.Click 源代码网推荐 Dim image As System.Drawing.Image, newimage As System.Drawing.Image 源代码网推荐 Dim callb As System.Drawing.Image.GetThumbnailImageAbort 源代码网推荐 Dim f As System.IO.File, fs As System.IO.FileStream 源代码网推荐 Dim temppath As String 源代码网推荐 Dim bigdata As Byte(), smalldata As Byte() "大图片数据、小图片数据 源代码网推荐 Dim pic As System.Data.SqlClient.SqlParameter, picsmall As System.Data.SqlClient.SqlParameter 源代码网推荐 "检察上传文件是否合标准,check函数是我根据网站需要写的了 源代码网推荐 If check(File1.PostedFile.FileName) <> "ok" Then 源代码网推荐 Response.Write(check(File1.PostedFile.FileName)) 源代码网推荐 Exit Sub 源代码网推荐 End If 源代码网推荐 "设置临时路径,为了防止多用户访问时的冲突,设了一个application对象 源代码网推荐 If Application("image") = "" Then 源代码网推荐 Application("image") = 0 源代码网推荐 End If 源代码网推荐 Application.Lock() 源代码网推荐 temppath = Server.MapPath(CStr(Application("image"))) "临时路径 源代码网推荐 Application("image") = Application("image") + 1 源代码网推荐 Application.UnLock() 源代码网推荐 "读取图片的数据 源代码网推荐 ReDim bigdata((Me.File1.PostedFile.InputStream.Length) 源代码网推荐 Me.File1.PostedFile.InputStream.Read(bigdata, 0, UBound(bigdata)) "将原图片数据读到bigdata中 源代码网推荐 "改变图片的大小 源代码网推荐 image = System.Drawing.Image.FromStream(Me.File1.PostedFile.InputStream) 源代码网推荐 "newimage里面的size也可另外设置,我只用了80*60和60*80两种 源代码网推荐 If image.Width > image.Height Then 源代码网推荐 newimage = image.GetThumbnailImage(80, 60, callb, New System.IntPtr(0)) 源代码网推荐 Else 源代码网推荐 newimage = image.GetThumbnailImage(60, 80, callb, New System.IntPtr(0)) 源代码网推荐 End If 源代码网推荐 image.Dispose() 源代码网推荐 "将新图片及图片变小后存到临时路径中 源代码网推荐 newimage.Save(temppath, System.Drawing.Imaging.ImageFormat.Jpeg) 源代码网推荐 newimage.Dispose() 源代码网推荐 "读取临时文件数据到smalldata中 源代码网推荐 fs = New System.IO.FileStream(temppath, IO.FileMode.Open, IO.FileAccess.Read) 源代码网推荐 ReDim smalldata(fs.Length) 源代码网推荐 fs.Read(smalldata, 0, UBound(smalldata)) 源代码网推荐 fs.Close() 源代码网推荐 "上述获得小图片的方法我原本想用system.io.memorystream的,可是行不通:代码如下: 源代码网推荐 "dim m as system.io.memorystream 源代码网推荐 "m=new system.io.memorystream() 源代码网推荐 "newimage.save(m,System.Drawing.Imaging.ImageFormat.Jpeg) 源代码网推荐 "redim smalldata(m.length) 源代码网推荐 "m.read(smalldata,0,m.length) 源代码网推荐 "可是上述方法读出来的smalldata全是空的,不知道原因,请指教 源代码网推荐 "删除临时文件 源代码网推荐 If f.Exists(temppath) Then 源代码网推荐 f.Delete(temppath) 源代码网推荐 End If 源代码网推荐 "将数据加入数据库中 源代码网推荐 "由于数据库中有image字段,我用sql插不进去,就用一个存储过程 源代码网推荐 "请教各位大虾用sql语句插入有image字段的表该怎么写 源代码网推荐 "用insert into talbe(pic,picsmall) values("&bigdata&","&smalldata&")这样不行,用""&bigdata&""也不行呀! 源代码网推荐 SqlConn = New System.Data.SqlClient.SqlConnection(connstr) "可自己设置connstr连接数据库服务器 源代码网推荐 SqlComm = New System.Data.SqlClient.SqlCommand() 源代码网推荐 SqlComm.CommandType = CommandType.StoredProcedure 源代码网推荐 SqlComm.CommandText = "dbo.image" 源代码网推荐 pic = New System.Data.SqlClient.SqlParameter("@pic", SqlDbType.Image) 源代码网推荐 pic.Value = bigdata 源代码网推荐 picsmall = New System.Data.SqlClient.SqlParameter("@picsmall", SqlDbType.Image) 源代码网推荐 picsmall.Value = smalldata 源代码网推荐 SqlComm.Parameters.Add(pic) 源代码网推荐 SqlComm.Parameters.Add(picsmall) 源代码网推荐 SqlComm.Connection = SqlConn 源代码网推荐 SqlComm.Connection.Open() 源代码网推荐 SqlComm.ExecuteNonQuery() 源代码网推荐 SqlComm.Connection.Close() 源代码网推荐 SqlComm.Dispose() 源代码网推荐 SqlConn.Dispose() 源代码网推荐 End Sub 源代码网推荐 End Class dbo.image存储过程如下: 源代码网推荐 create proc dbo.image 源代码网推荐 @pic image, 源代码网推荐 @picsmall image 源代码网推荐 as 源代码网推荐 insert into table(pic,picsmall) values (@pic,@picsmall) 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
