怎么样在上传的时候把图片信息以二进制的形式存入数据库? 表单中还有别的<input >数据 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 因为原来这功能是用delphi做的,delphi存的是二进制图片信息。web要跟delphi软件统一,要不数据库原有的那些数据就不好处理了。 用 adodb.recordset 的 appchunck 这个函数 upload.htm' 上传页面<html> <body> <p align="center">图片上传</p><center> <form name="mainForm" enctype="multipart/form-data"' 这个Form属性是得到上传的数据的关键action="process.asp" method=post> <input type=file name=mefile><br> <input type=submit name=ok value="上传"> </form> </center> </body> </html> process.asp' 处理浏览器中送来的数据<% 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' 显示图片<% 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.ContentType = "image/*",以便正常显示图片Response.BinaryWrite rec("img").getChunk(7500000) rec.close set rec=nothing set connGraph=nothing %> to读书之人:这个程序我曾经看过,请问如果表单里面还有别的input程序该如何操作?怎么过滤? leo963258(读书之人) 你这样的方法只是把图片传上了,那文字怎么办呢?图片与文字怎样分离很复杂,可以说清楚点吗? 如果是 ASP 的话,有专门的上传文件的免费组件,可以图文一块 post 的.PHP 的话,就更没问题了,组件都不需要呢,赫赫 to bflovesnow() :不是上传到文件夹里面哦,是要把整张图片保存到数据库里的。to 读书之人:用两个表单?那是否处理文件也要分开了?感觉这样很容易乱套阿 再up图片要更新总有条件吧?不可能SELECT * FROM [images] where id is null当作插入图片条件的语句的比如我需要id=1的时候,这个id参数传过来怎么接受? 从我的程序里截下来的,取得数据的部分:response.buffer=true formsize=Request.TotalBytesif formsize>80000 then response.write "图片过大,拒绝操作"elseformdata=request.binaryread(formsize) bncrlf=chrB(13) & chrB(10)divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)datastart=instrb(formdata,bncrlf & bncrlf)+4dataend=instrb(datastart+1,formdata,divider)-datastartmydata=midb(formdata,datastart,dataend) 页面中:<form method="post" action="upfile.asp" name="reg" enctype="multipart/form-data"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td align="center"><p><strong>选择图片:</strong> <input type="file" name="file" size="32"> <br> <br> <input type="submit" name="Submit" value="开始上传"> <input type="reset" name="reset" value="重新选择"> </td> </tr> </table></form>upfile.asp文件内容:FormSize = Request.TotalBytesFormData = Request.BinaryRead(FormSize)Image=ImageUp (FormSize,Formdata)id=1set rs=server.CreateObject("adodb.recordset")sql="SELECT * FROM npic where 0=1"rs.Open sql,conn,1,3 rs.AddNewrs("nid") =id1rs("pic") = NULLrs("pic").appendchunk Imagers.Updateid=rs("id")rs.Closeset rs=nothing conn.close set conn=nothingfunction ImageUp(formsize,formdata) bncrlf=chrb(13) & chrb(10) divider=leftb(formdata,instrb(formdata,bncrlf)-1) datastart=instrb(formdata,bncrlf&bncrlf)+4 dataend=instrb(datastart+1,formdata,divider)-datastart imageup=midb(formdata,datastart,dataend)end function 用jsp的话,就好办com.jspsmart.upload.SmartUpload mySmartUpload=new com.jspsmart.upload.SmartUpload();mySmartUpload.initialize(pageContext);mySmartUpload.upload();com.jspsmart.upload.File myfile=mySmartUpload.getFiles().getFile(0);byte[] all=myfile.getContentString().getBytes();然后写入blob字段BLOB blob = rs.getBLOB(blobname); //得到BLOB字段blob.putBytes(1, all); //将字节数组写入BLOB字段 asp中的aspsmartupload组件也可以把文件和input一起传上去,我记得好像是上传对象的一个Form属性吧 求高手改一js控件 页面重画问题?急塞 一个JS的问题!急!!! javascript正则表达式 求给这个JS的menu设置当前高亮? 怎样用JS生成这样的XML文档???? 真的没有高手吗?代码如下,是高手的请进。小弟问了好久,没有人能解决吗? Javascript print方法打印怎么把表格的bkcolor或background打印出来? 这个用inner能实现吗?不能的话用什么? 请问能改变checkbox框颜色变灰吗 如果做到Frame的顺序加载阿? 当select的name为select1[]这种后面有中括号的格式的时候,应该如何用JS获得它的值
web要跟delphi软件统一,要不数据库原有的那些数据就不好处理了。
' 上传页面
<html>
<body>
<p align="center">图片上传</p>
<center>
<form name="mainForm" enctype="multipart/form-data"
' 这个Form属性是得到上传的数据的关键
action="process.asp" method=post>
<input type=file name=mefile><br>
<input type=submit name=ok value="上传">
</form>
</center>
</body>
</html> process.asp
' 处理浏览器中送来的数据
<%
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
' 显示图片
<%
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.ContentType = "image/*",以便正常显示图片
Response.BinaryWrite rec("img").getChunk(7500000)
rec.close
set rec=nothing
set connGraph=nothing
%>
你这样的方法只是把图片传上了,那文字怎么办呢?图片与文字怎样分离很复杂,可以说清楚点吗?
图片要更新总有条件吧?不可能
SELECT * FROM [images] where id is null
当作插入图片条件的语句的
比如我需要id=1的时候,这个id参数传过来怎么接受?
response.buffer=true
formsize=Request.TotalBytes
if formsize>80000 then
response.write "图片过大,拒绝操作"
else
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)
<form method="post" action="upfile.asp" name="reg" enctype="multipart/form-data">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center"><p><strong>选择图片:</strong>
<input type="file" name="file" size="32">
<br>
<br>
<input type="submit" name="Submit" value="开始上传">
<input type="reset" name="reset" value="重新选择">
</td>
</tr>
</table>
</form>upfile.asp文件内容:FormSize = Request.TotalBytes
FormData = Request.BinaryRead(FormSize)Image=ImageUp (FormSize,Formdata)
id=1
set rs=server.CreateObject("adodb.recordset")
sql="SELECT * FROM npic where 0=1"
rs.Open sql,conn,1,3
rs.AddNew
rs("nid") =id1
rs("pic") = NULL
rs("pic").appendchunk Image
rs.Update
id=rs("id")
rs.Close
set rs=nothing
conn.close
set conn=nothingfunction ImageUp(formsize,formdata)
bncrlf=chrb(13) & chrb(10)
divider=leftb(formdata,instrb(formdata,bncrlf)-1)
datastart=instrb(formdata,bncrlf&bncrlf)+4
dataend=instrb(datastart+1,formdata,divider)-datastart
imageup=midb(formdata,datastart,dataend)
end function
com.jspsmart.upload.SmartUpload mySmartUpload=new com.jspsmart.upload.SmartUpload();
mySmartUpload.initialize(pageContext);
mySmartUpload.upload();
com.jspsmart.upload.File myfile=mySmartUpload.getFiles().getFile(0);
byte[] all=myfile.getContentString().getBytes();
然后写入blob字段
BLOB blob = rs.getBLOB(blobname); //得到BLOB字段
blob.putBytes(1, all); //将字节数组写入BLOB字段