一、把图片存入数据库中
用到以下几个方面的知识: 1. 使用流对象 2. 查找准备上传的图片的大小和类型 3.怎么使用InputStream方法 插入图片的必要条件 1.#Form 标记的 enctype 属性应该设置成 enctype="multipart/form-data" 2.# 需要一个<input type=file>表单来使用户选择他们要上传的文件,同时我们需要导入 System.IO名称空间来处理流对象 对SqlServer做以下的准备 1.# 需要至少含有一个图片类型的字段的表 2.# 如果我们还有另外一个变字符类型的字段来存储图片类型,那样会更好一些。 窗体控件 1.插入图片用到的是System.Web.UI.HtmlControls.HtmlInputFile控件,我们在webform中放入这个控件,取名为“imgInput” 2.同时再放入一个确认上传按钮“Button1” 程序代码 AddImg,用于返回要上传的图片内容 1Private Function AddImg()Function AddImg(ByVal InputImg As System.Web.UI.HtmlControls.HtmlInputFile, ByVal ImgType As String, ByVal MaxSize As Int64) As Byte() 2'传入一个htmlinputfile控件,一个上传图片格式和一个上传图片最大值,返回图片的内容,既要写入数据库中的内容,你也可以同时写入图片类型 3 Dim intImageSize As Int64 4 Dim strImageType As String 5 Dim ImageStream As Stream 6 ' Gets the Image Type 7 strImageType=InputImg.PostedFile.ContentType 8 If strImageType <> ImgType Then 9 Response.Write("<script>alert('图片类型为""')</script>") 'jgp类型为"image/pjpeg" 10 Exit Function 11 End If 12 ' Gets the Size of the Image 13 intImageSize = InputImg.PostedFile.ContentLength 14 If intImageSize > MaxSize Then 15 Response.Write("<script>alert('图片不得大于K')</script>") 16 Exit Function 17 End If 18 ' Reads the Image 19 ImageStream = InputImg.PostedFile.InputStream 20 Dim ImageContent(intImageSize) As Byte 21 Dim intStatus As Integer 22 intStatus = ImageStream.Read(ImageContent, 0, intImageSize) 23 Return ImageContent 24 End Function 示例调用 Dim imageContent() As Byte imageContent = AddImg(fileImg, "image/pjpeg", 512000)'上传图片类型为jpg,最大不超过500K 插入数据库 我想这部分就不用写了吧,你可以用任何方式(推荐使用存储过程),将imageContent插入到数据库中类型为image的字段就行了。 二、把图片从数据库中读出 这部分比较简单: 假设img变量是你从数据库中取出的图片内容 那么直接使用 Response.BinaryWrite(img) 就可以将图片输出到页面上了 三:总结 将图片存放在数据库中其实是起到了图片保护的作用,这样就算别人浏览你的机器也看不到你的图片,也可以用来保护重要的图片资料。 |