|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
一:前言 首先,没有料到图片与文本的上传会引起这么大的注重。上一篇贴子(Id=435906)贴出后,有不少人来信说看不懂。或 是仍旧不能实现。我就以一种完全简朴的手法。完成无组件的文本与图片上传数据库所有过程。希望能帮助所有对此有疑 问的网友。 二:预备工作 按照惯例,我先将我的测试环境告诉大家。 系统:Win98se + pws + asp 编程环境:Visual Interdev 6.0 数据库:Access2000 (因为网友问的最多的都是Access2000的问题。) 建一个库:access2000中,先建好一个Test.mdb的数据库。详细有四个字段。 id | text1 | text2 | img 自动编号 文本 文本 OLE对象 ’假如是sql server 则选择(image即可) 三:Are you ready ,Go!!! 3-1.建上传表单: 我们知道,图像与文本是两种不同制式的文件(二进制,流式文本)而假如要同一表单提交的话,(file格式提交)则 我们获取时就不能用原来的方式request.form而必须用equest.TotalBytes来获得所有的提交资料。但这时两种格式的文件 混合在一起比较难分。我的上一贴已经告诉大家用二进制的方式来分开这些资料。但十分麻烦,要用到许多二进值的函 数,所以许多网友来信问我有没有更简朴的方式,好。我可以告诉大家,有!而且保证下面的方式保证一学就会。(这种方 法很另类但伟人说过白猫,黑猫。能上网的就是好猫!) upload.asp(详细代码如下) <% @ language=vbscript %> <html> <head> <meta name="VI60_defaultClientScript" content="VBScript"> <title> File Upload </title> <script ID="clientEventHandlersVBS" LANGUAGE="vbscript"> <!-- Sub form2_onsubmit //** 这里是要害,当form2在提交的过程中时,即活form1的提交 form1.submit //**所以我们这里用了两个表单,但只用一个提交就可以了。 End Sub --> </script> </head> <body> <form name="form1" ENCTYPE="multipart/form-data" ACTION="upimage.asp" METHOD="POST" target="_blank"> Please choose a picture to upload: <br> <input NAME="picture" TYPE="FILE"> <br> </form> <form name="form2" action="uptext.asp" method="post"> <input type="text" name="text1"><br> <input type="text" name="text2"><br> <input type="submit" value="提交"> </form> </body> </html> 3-2 兵分两路来处理数据。 首先,文本很简朴。 uptext.asp (代码如下) <% @ language=vbscript %> <% strconn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb") text1=request.form("text1") text2=request.form("text2") response.write text1 response.write text2 set rs=Server.CreateObject("adodb.recordset") sql="SELECT top 1 * FROM imgtable ORDER BY id DESC" ’这里的意思是选择最后一个Id,既刚刚被改动 rs.Open sql,strconn,1,3 ’就是你上传的图像的两个文本字段。 rs("text1")=text1 ’注重,这里是改动不是添加,所以不用addnew。 rs("text2")=text2 rs.Update rs.Close %> 接着,来处理图像。 upimage.asp (详细代码如下) <% FormSize = Request.TotalBytes ’得到数据 FormData = Request.BinaryRead( FormSize ) function 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 Image=ImageUp (FormSize,Formdata) ’这里就是图像部分了。 set rs=server.CreateObject("adodb.recordset") strconn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb") sql="SELECT * FROM imgtable" rs.Open sql,strconn,1,3 rs.AddNew ’因为表单二在表单一提交的过程中下提交了。 rs("img").appendchunk Image ’所以这里是添加。 rs.Update rs.Close response.contenttype="image/gif" response.binarywrite imageup(formsize,formdata) ’这里是显示图像。表示成功! %> 啊?!?!原来如此简朴! 四:“显示,我要同页显示” 终于完成了图文同步提交。(真的是同步吗?不是吗?是吗? 唉,我们只是为了解决问题。何必当真哪?不 是 吗?) 现在我们还要让他同页显示出来。其实,这是同样的思路。我们也用两页来完成。 主页面:show.asp <%@ Language=VBScript %> <% strconn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb") set rs=Server.CreateObject("adodb.recordset") sql="SELECT top 1 * FROM imgtable ORDER BY id DESC" rs.Open sql,strconn,1,3 %> <html> <body> 以下是你的上传资料。<br> 文本一:<% Response.Write rs("text1") %><br> 文本二:<% Response.Write rs("text2") %><br> 你的图像: <img src=showimg.asp?id=<%=rs("id")%>> ’注重这里,这才是要害。他可以实现网页图像与文本 </body> ’共存。 </html> 幕后页面:showimg.asp (说他是幕后的页面,因为他潜伏在主页面里。看上是一个页面相同) <%@ Language=VBScript %> <% strconn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb") id=Request("id") set rs=server.CreateObject("adodb.recordset") sql="SELECT * FROM imgtable where id="&id rs.Open sql,strconn,1,3 response.contenttype="image/gif" Response.BinaryWrite rs("img") %> 返回类别: 教程 上一教程: ASP OBJECT之:CHARSET 下一教程: ADO数据访问模型初学者入门 您可以阅读与"无组件图片与文本同步存入数据库的最简朴的办法"相关的教程: · 关于图片与文本同存在数据库中的详细思路 · 用ASP实现图片上传并存入数据库 · 无组件上传图片至SQL SERVER数据库 · 用纯ASP代码实现图片上传并存入数据库中 · 用纯ASP代码实现图片上传并存入数据库中 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |