商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 图像图表

图像图表

  发布于2026-07-22 阅读(0)

扫一扫,手机访问

如何把图片上传到数据库中并显示出来?

把图片直接存进数据库,然后再从数据库里读出来显示——这个需求在早期的Web开发中还挺常见的,尤其是用ASP搭配Access的时候。虽然现在更推荐用文件存储+路径记录的方式,但理解这种“二进制流直存”的思路,对处理文件上传、数据绑定和二进制输出都很有帮助。下面直接上干货,分三个步骤走:上传页面、处理页面、显示页面。

先把上传页面搞定。这里的关键是 formenctype 属性必须设为 multipart/form-data,否则浏览器不会把文件数据以二进制方式发送。另外,用 让用户选择文件。来看一个简单的例子:

  
  

千花飞舞之图片上传


接下来是处理页面 process.asp。这里需要手动解析浏览器发来的二进制数据——因为ASP自带的 Request.Form 无法直接处理 multipart/form-data 格式。核心思路是:取得整个请求的二进制数据,找到分隔边界,然后从中截取出图片文件的二进制内容。截取之后,用 RecordsetAppendChunk 方法把数据写入数据库的 OLE对象 字段(Access中对应“OLE对象”类型)。注意,数据库连接字符串要指向你的 Access 文件(比如 images.mdb)。

<%  
response.buffer=true  
formsize=request.totalbytes  
formdata=request.binaryread(formsize)  
bncrlf=chrB(13) & chrB(10)  
divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)  
datastart=instrb(formdata,bncrlf & bncrlf)+4  
dataend=instrb(datastart+1,formdata,divider)-datastart  
mydata=midb(formdata,datastart,dataend)  

set connGraph=server.CreateObject("ADODB.connection")  
connGraph.ConnectionString="driver={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("images.mdb") & ";uid=;PWD=;"  
connGraph.Open  

set rec=server.createobject("ADODB.recordset")  
rec.Open "select * from [images] where id is null",connGraph,1,3  
rec.addnew  
rec("img").appendchunk mydata  
rec.update  
rec.close  
set rec=nothing  
set connGraph=nothing  
%>  

最后是显示页面 showimg.asp。这个页面的功能很简单:根据传入的 id 参数,从数据库中读出对应的二进制数据,然后输出到浏览器。有一个很容易被忽略的细节:在输出之前,必须设置 Response.ContentType = "image/*",否则浏览器会把它当成普通文本,显示成乱码。然后使用 Response.BinaryWrite 把数据写出去(注意 getChunk 的参数要足够大,比如 7500000 字节,确保能容纳整张图片)。

<%  
set connGraph=server.CreateObject("ADODB.connection")  
connGraph.ConnectionString="driver={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("images.mdb") & ";uid=;PWD=;"  
connGraph.Open  
set rec=server.createobject("ADODB.recordset")  
strsql="select img from images where id=" & trim(request("id"))  
rec.open strsql,connGraph,1,1  
Response.ContentType = "image/*"  
Response.BinaryWrite rec("img").getChunk(7500000)  
rec.close  
set rec=nothing  
set connGraph=nothing  
%>  

整个流程就是这样。实际使用时,你还需要考虑文件大小限制、图片类型校验、错误处理等细节,但核心逻辑都在上面了。对于学习ASP的二进制上传和数据库存储来说,这是一个非常经典的范例。

[1]

本文转载于:https://www.jb51.net/article/4770.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注