您的位置:首页 > 编程语言 > ASP

用asp.net实现将上传的图片存入数据库!

2007-02-06 10:06 691 查看



Public Class changimageClass 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






Web Form Designer Generated Code#Region " Web Form Designer Generated Code "




'This call is required by the Web Form Designer.




<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()Sub InitializeComponent()


Me.SqlConn = New System.Data.SqlClient.SqlConnection()


Me.SqlComm = New System.Data.SqlClient.SqlCommand()




End Sub






Private Sub Page_Init()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()Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


End Sub






Private Sub cmdupload_Click()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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: