无组件图片与文本同步存入数据库的最简单的办法

导读:
  一:前言
  首先,没有料到图片与文本的上传会引起这么大的注意。上一篇贴子(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 %>
  
  
  
   File Upload
  <script ID="clientEventHandlersVBS" LANGUAGE="vbscript">
     Sub form2_onsubmit //** 这里是关键,当form2在提交的过程中时,即活form1的提交

  form1.submit //**所以我们这里用了两个表单,但只用一个提交就可以了。

  End Sub

  -->
  </script>
  
  
  

  Please choose a picture to upload:

  

  

  

  

  

  
  

  
  
  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

%>  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) ’这里是显示图像。表示成功!

%>  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

%>  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

  %>
  
  
  以下是你的上传资料。

  文本一:<% Response.Write rs("text1") %>

  文本二:<% Response.Write rs("text2") %>

  你的图像:
   > ’注意这里,这才是关键。他可以实现网页图像与文本

  ’共存。

  

  幕后页面: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")

%>  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")

  %>

本文转自
http://hi.baidu.com/1__1/blog/item/3c8109d10a748fd6562c844c.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BobHe

您的支持就是我的动力,谢谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值