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

原创 2002年03月31日 15:44:00

无组件图片与文本同步存入数据库的最简单的办法
动感教育网 发布日期:2001-7-17 字数:4798

一:前言

首先,没有料到图片与文本的上传会引起这么大的注意。上一篇贴子(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")
%>

(全文完:希望本文能帮助那些急于想解决本类问题的网友。)

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

作者:未知 来源:未知 我的前言最近做个网站需要在数据库中存储图片文件,随便在网找了下,发现这个办法确实简单。我是个不喜欢复杂的人,看到当然大喜,忍不住要放在这里,一是作为存档;二是希望有需要的朋友能...
  • ylancelot
  • ylancelot
  • 2005年10月17日 17:56
  • 604

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

导读:   一:前言   首先,没有料到图片与文本的上传会引起这么大的注意。上一篇贴子(Id=435906)贴出后,有不少人来信说看不懂。或   是仍然不能实现。我就以一种完全简单的手法。完成无组件...
  • hegx2001
  • hegx2001
  • 2008年06月11日 11:37
  • 290

在java 最简单连接数据库的方式

public class Test { public static void main(String[] args) throws ClassNotFoundException, SQLExcept...
  • ya985860612
  • ya985860612
  • 2013年12月05日 19:32
  • 759

自己实现一个最简单的数据库

自己实现一个最简单的数据库 July 4th , 2016 转载 codeceo 原文连接:http://www.codeceo.com/article/most-simple-database.h...
  • Real_Myth
  • Real_Myth
  • 2016年07月23日 15:48
  • 1016

2.4.1 Windows惹的祸

2.4.1  Windows惹的祸Linux老手们告诫新用户一定要先装Windows,然后再安装Linux。但遗憾的是,新手们总有一天会打破这个规则(想一想处理中毒后的Windows最简单有效的办法是...
  • Linuxdianc
  • Linuxdianc
  • 2009年12月18日 10:47
  • 271

把十进制转成十六进制的一个简单易行的方法(不需要用栈)

看代码过程中,有个特别的需求需要把十进制转成十六进制,存在文件中,便于人来观看.下面的程序就可以实现此功能:   #include #include // 把十进制转成十六进制,并保存存在...
  • stpeace
  • stpeace
  • 2012年11月21日 17:17
  • 4667

访问Google只需一步,超级简单

超级简单的访问Google的方法
  • fengyhj
  • fengyhj
  • 2016年09月08日 16:29
  • 728

一个简单的图片懒加载

一个简单的图片懒加载所谓懒加载,是为了提高网页的打开的速度,获得更好用户体验的一种手段。其选择的重要的部分先加载,次要的部分需要的时候再加载。比如一个电商网站,首屏通常有很多的数据,清晰度较高的 ba...
  • Faremax
  • Faremax
  • 2017年03月13日 10:32
  • 765

PAT 乙级 1078. 字符串压缩与解压 (20)

1078. 字符串压缩与解压 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B ...
  • PriestessofBirth
  • PriestessofBirth
  • 2017年12月18日 12:15
  • 209

获取外网IP最简单的方法

std::string getOutIpaddress() {  std::string strRet = "";  HRESULT hr = URLDownloadToFile(NULL,"h...
  • cackeme
  • cackeme
  • 2013年12月27日 10:49
  • 954
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:无组件图片与文本同步存入数据库的最简单的办法
举报原因:
原因补充:

(最多只允许输入30个字)