欢迎光临
我们一直在努力

无组件上传文字与图片至数据库之gztiger解决方案-ASP教程,数据库相关

建站超值云服务器,限时71元/月

曾一度为图片与文字上传至数据库困扰,《化境无组件上传图片2.0》写得很好,但不是完全适合自己。经过认真阅读源代码、修改与测试,将其改为无组件上传多条文字信息与多张图片至数据库。并在iis5+access2000+asp测试通过。现把源代码公布,希望能对那些曾经也被这问题困扰的朋友有所帮助。同时希望各位同道斧正。

声明:《化境无组件上传图片2.0》并非我写的,在此对《化境无组件上传图片2.0》的作者真诚说声:谢谢!

代码如下:

upfile.index —————————————————————————————

<!– 郑 重 声 明

这是免费代码,从《化境无组件上传图片2.0》修改而来,目的只为对这问题有困扰的朋友有所帮助,

并对《化境无组件上传图片2.0》的作者说声:谢谢!本代码在iis5+access2000+asp测试通过

——gztiger

–>

<html>

<head>

<title>化境编程界无组件上传文字与图片至数据库之gztiger解决方案&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;修改者:gztiger&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</title>

<meta http-equiv="content-type" content="text/html; charset=gb2312">

</head>

<body bgcolor="#ffffff" text="#000000">

<form name="form1" method="post" action="upfile.asp" enctype="multipart/form-data" >

<table border="1" cellspacing="0" cellpadding="0" bordercolorlight="#000000" bordercolordark="#cccccc" width="91" height="23">

<tr>

<td align="left" valign="middle" height="18" width="18">&nbsp;</td>

<td bgcolor="#cccccc" align="left" valign="middle" height="18" width="67"> 文件上传</td>

</tr>

</table>

<table width="71%" border="1" cellspacing="0" cellpadding="5" align="center" bordercolordark="#cccccc" bordercolorlight="#000000">

<tr bgcolor="#cccccc">

<td height="22" align="left" valign="middle" bgcolor="#cccccc">&nbsp;化境编程界文件上传修改版

        修改者:<a href="mailto:gztiger@21cn.com">gztiger</a> </td>

</tr>

<tr align="left" valign="middle" bgcolor="#eeeeee">

<td bgcolor="#eeeeee" height="92">

<!–此处可任意添加多个文本与文件框

在upfile.asp中对应添加textn=trim(upload.form("textn")) 、rs("imagedatan")=image_set(n)

回显提交信息就不用说了 ,数据库表中亦要添加相对字段名:)

–>

文本框1:<input type="text" name="text1" value="图片与文本上传测试1" ><br>

文本框2:<input type="text" name="text2" value="图片与文本上传测试2" ><br>

文本框3:<input type="text" name="text3" value="图片与文本上传测试3" ><br>

图象1 :<input type="file" name="image1" style="width:400" value=""><br>

图象2 :<input type="file" name="image2" style="width:400" value=""><br>

图象3 :<input type="file" name="image3" style="width:400" value=""><br>

文本框4:<input type="text" name="text4" value="图片与文本上传测试4" ><br>

文本框5:<input type="text" name="text5" value="图片与文本上传测试5" ><br>

文本框6:<input type="text" name="text6" value="图片与文本上传测试6" ><br>

文本框7:<input type="text" name="text7" value="图片与文本上传测试7" >

</td>

</tr>

<tr align="center" valign="middle" bgcolor="#eeeeee">

<td bgcolor="#eeeeee" height="24"> <input type="submit" name="submit" value="提 交" class="bt">

<input type="reset" name="submit2" value="清 空" class="bt"> </td>

</tr>

</table>

</form>

</body>

</html>

upfile.asp —————————————————————————————–

<%server.scripttimeout=5000%>

<!–#include file="upload_5xsoft.inc"–>

<title>化境编程界文件上传修改版&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;修改者:gztiger&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</title>

<%

dim upload,file,formname,formpath,icount

set upload=new upload_5xsoft 建立上传对象

text1=trim(upload.form("text1")) —-获取表单文本框信息(原来代码用for循环)-目的为了说明获取文本框信息的方法

text2=trim(upload.form("text2"))

text3=trim(upload.form("text3"))

text4=trim(upload.form("text4"))

text5=trim(upload.form("text5"))

text6=trim(upload.form("text6"))

text7=trim(upload.form("text7"))

icount=0

n=1

response.write "<br>"

for each formname in upload.objfile ——————列出所有上传了的文件

set file=upload.file(formname) ——————–生成一个文件对象

image_countn=image_countn&","&file.filename ———-把图象名做成数组

if file.filesize>0 then ————————如果 filesize > 0 说明有文件数据

file.saveas server.mappath("img/"&file.filename) ———-保存文件

end if

n=n+1

set file=nothing

next

set upload=nothing ——————————-删除此对象

image_set=split(image_countn,",")———————返回数组

——添加信息到数据库————————————-

connstr="dbq="+server.mappath("database\img_text.mdb")+";defaultdir=;driver={microsoft access driver (*.mdb)};"

set conn=server.createobject("adodb.connection")

conn.open connstr

set rs=server.createobject("adodb.recordset")

sqlstr="select * from imgdata"

rs.open sqlstr,conn,1,3

if not rs.eof then

id=rs("id")+1

else

id=1

end if

rs.addnew

rs("text1")=text1

rs("text2")=text2

rs("text3")=text3

rs("text4")=text4

rs("text5")=text5

rs("text6")=text6

rs("text7")=text7

rs("imagedata1")=image_set(1)

rs("imagedata2")=image_set(2)

rs("imagedata3")=image_set(3)

rs.update

rs.close

set rs=nothing

upload_ok=true

if upload_ok=true then

——-回显提交信息—————————

response.write("您上传的信息如下:"&"<br>")

connstr="dbq="+server.mappath("database\img_text.mdb")+";defaultdir=;driver={microsoft access driver (*.mdb)};"

set conn=server.createobject("adodb.connection")

conn.open connstr

set rs=server.createobject("adodb.recordset")

sqlstr="select * from imgdata order by id desc"

rs.open sqlstr,conn,1,1

%>

文本1:<%=rs("text1")%><br>

文本2:<%=rs("text2")%><br>

文本3:<%=rs("text3")%><br>

文本4:<%=rs("text4")%><br>

文本5:<%=rs("text5")%><br>

文本6:<%=rs("text6")%><br>

文本7:<%=rs("text7")%><br>

<%if rs("imagedata1")<>"" then%>

图象1:<%=rs("imagedata1")%><br>

<img src="img/<%=rs("imagedata1")%>"><br>

<%end if%>

<%if rs("imagedata2")<>"" then%>

图象2:<%=rs("imagedata2")%><br>

<img src="img/<%=rs("imagedata2")%>" ><br>

<%end if%>

<%if rs("imagedata3")<>"" then%>

图象3:<%=rs("imagedata3")%><br>

<img src="img/<%=rs("imagedata3")%>" ><br>

<% end if

rs.close

set rs=nothing

end if

%>

upload_5xsoft.inc ———————————————————————————-

<script runat=server language=vbscript>

dim data_5xsoft

class upload_5xsoft

dim objform,objfile,version

public function form(strform)

strform=lcase(strform)

if not objform.exists(strform) then

form=""

else

form=objform(strform)

end if

end function

public function file(strfile)

strfile=lcase(strfile)

if not objfile.exists(strfile) then

set file=new fileinfo

else

set file=objfile(strfile)

end if

end function

private sub class_initialize

dim requestdata,sstart,vbcrlf,sinfo,iinfostart,iinfoend,tstream,istart,thefile

dim ifilesize,sfilepath,sfiletype,sformvalue,sfilename

dim ifindstart,ifindend

dim iformstart,iformend,sformname

version="化境http上传程序 version 2.0"

set objform=server.createobject("scripting.dictionary")

set objfile=server.createobject("scripting.dictionary")

if request.totalbytes<1 then exit sub

set tstream = server.createobject("adodb.stream")

set data_5xsoft = server.createobject("adodb.stream")

data_5xsoft.type = 1

data_5xsoft.mode =3

data_5xsoft.open

data_5xsoft.write request.binaryread(request.totalbytes)

data_5xsoft.position=0

requestdata =data_5xsoft.read

iformstart = 1

iformend = lenb(requestdata)

vbcrlf = chrb(13) & chrb(10)

sstart = midb(requestdata,1, instrb(iformstart,requestdata,vbcrlf)-1)

istart = lenb (sstart)

iformstart=iformstart+istart+1

while (iformstart + 10) < iformend

iinfoend = instrb(iformstart,requestdata,vbcrlf & vbcrlf)+3

tstream.type = 1

tstream.mode =3

tstream.open

data_5xsoft.position = iformstart

data_5xsoft.copyto tstream,iinfoend-iformstart

tstream.position = 0

tstream.type = 2

tstream.charset ="gb2312"

sinfo = tstream.readtext

tstream.close

取得表单项目名称

iformstart = instrb(iinfoend,requestdata,sstart)

ifindstart = instr(22,sinfo,"name=""",1)+6

ifindend = instr(ifindstart,sinfo,"""",1)

sformname = lcase(mid (sinfo,ifindstart,ifindend-ifindstart))

如果是文件

if instr (45,sinfo,"filename=""",1) > 0 then

set thefile=new fileinfo

取得文件名

ifindstart = instr(ifindend,sinfo,"filename=""",1)+10

ifindend = instr(ifindstart,sinfo,"""",1)

sfilename = mid (sinfo,ifindstart,ifindend-ifindstart)

thefile.filename=getfilename(sfilename)

thefile.filepath=getfilepath(sfilename)

取得文件类型

ifindstart = instr(ifindend,sinfo,"content-type: ",1)+14

ifindend = instr(ifindstart,sinfo,vbcr)

thefile.filetype =mid (sinfo,ifindstart,ifindend-ifindstart)

thefile.filestart =iinfoend

thefile.filesize = iformstart -iinfoend -3

thefile.formname=sformname

if not objfile.exists(sformname) then

objfile.add sformname,thefile

end if

else

如果是表单项目

tstream.type =1

tstream.mode =3

tstream.open

data_5xsoft.position = iinfoend

data_5xsoft.copyto tstream,iformstart-iinfoend-3

tstream.position = 0

tstream.type = 2

tstream.charset ="gb2312"

sformvalue = tstream.readtext

tstream.close

if objform.exists(sformname) then

objform(sformname)=objform(sformname)&", "&sformvalue

else

objform.add sformname,sformvalue

end if

end if

iformstart=iformstart+istart+1

wend

requestdata=""

set tstream =nothing

end sub

private sub class_terminate

if request.totalbytes>0 then

objform.removeall

objfile.removeall

set objform=nothing

set objfile=nothing

data_5xsoft.close

set data_5xsoft =nothing

end if

end sub

private function getfilepath(fullpath)

if fullpath <> "" then

getfilepath = left(fullpath,instrrev(fullpath, "\"))

else

getfilepath = ""

end if

end function

private function getfilename(fullpath)

if fullpath <> "" then

getfilename = mid(fullpath,instrrev(fullpath, "\")+1)

else

getfilename = ""

end if

end function

end class

class fileinfo

dim formname,filename,filepath,filesize,filetype,filestart

private sub class_initialize

filename = ""

filepath = ""

filesize = 0

filestart= 0

formname = ""

filetype = ""

end sub

public function saveas(fullpath)

dim dr,errorchar,i

saveas=true

if trim(fullpath)="" or filestart=0 or filename="" or right(fullpath,1)="/" then exit function

set dr=createobject("adodb.stream")

dr.mode=3

dr.type=1

dr.open

data_5xsoft.position=filestart

data_5xsoft.copyto dr,filesize

dr.savetofile fullpath,2

dr.close

set dr=nothing

saveas=false

end function

end class

</script>

————————————————-

数据库名:img_text

表:imgdata

字段名 类型

id 自动编号

imagedata1 文本

imagedata2 文本

imagedata3 文本

text1 文本

text2 文本

text3 文本

text4 文本

text5 文本

text6 文本

text7 文本

————————————————-

还要新建一空的文件夹img存放图片.

————————————————–

以上是全部代码,希望能对大家有所帮助.

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 无组件上传文字与图片至数据库之gztiger解决方案-ASP教程,数据库相关
分享到: 更多 (0)