ASP网页编程之纯ASP上传图象文件到数据库的最好例子
asp对于服务器的要求较高,一般的服务器如果访问量一大就垮了,不得不重启。getfile.htm-------------------------
<html>
<head>
<title>保留图片到数据库</title>
</head>
<body>
<b>
<p></b>你能够找个图片尝尝,保留终了后会有提醒</p>
<formMETHOD="POST"ENCTYPE="multipart/form-data"ACTION="savetodb.asp">
<p>Email:<inputNAME="email"VALUE="wangcq@sina.com"size="20"><br>
Picture:<inputTYPE="file"NAME="blob"><br>
<inputTYPE="submit"NAME="Enter"></p>
</form>
</body>
</html>
savetodb.asp
----------------------------------
<%
Response.Buffer=TRUE
Response.Clear
byteCount=Request.TotalBytes
RequestBin=Request.BinaryRead(byteCount)
DimUploadRequest
SetUploadRequest=CreateObject("Scripting.Dictionary")
BuildUploadRequestRequestBin
email=UploadRequest.Item("email").Item("Value")
contentType=UploadRequest.Item("blob").Item("ContentType")
filepathname=UploadRequest.Item("blob").Item("FileName")
filename=Right(filepathname,Len(filepathname)-InstrRev(filepathname,""))
picture=UploadRequest.Item("blob").Item("Value")
Response.ContentType=contentType
Response.binaryWritepicture
setobjCn=server.createobject("adodb.connection")
setobjRst=server.createobject("adodb.recordset")
objCn.Open"upload"
objrst.Open"pic",objcn,1,3,2
objrst.addnew
objrst.fields("filename")=filename
objrst.fields("type")="gif"
objrst.fields("what").appendchunkpicture
objrst.update
response.write"<ahref=showpic.asp?id="&objrst("id")&">第"&objrst("id")&"个图片。</a>"
objrst.close
objCn.close
setobjrst=nothing
setobjcn=nothing
%>
<!--#includefile="upload.asp"-->
showpic.asp
----------------------------------------
<%
setobjCn=server.createobject("adodb.connection")
setobjRst=server.createobject("adodb.recordset")
objCn.Open"upload"
objrst.Open"selectwhatfrompicwhereid="&request("id"),objcn
ifnotobjrst.eofthen
response.binarywriteobjrst("what")
endif
objrst.close
objCn.close
setobjrst=nothing
setobjcn=nothing
%>
upload.asp
-------------------------------------------
<%
SubBuildUploadRequest(RequestBin)
Gettheboundary
PosBeg=1
PosEnd=InstrB(PosBeg,RequestBin,getByteString(chr(13)))
boundary=MidB(RequestBin,PosBeg,PosEnd-PosBeg)
boundaryPos=InstrB(1,RequestBin,boundary)
Getalldatainsidetheboundaries
Dountil(boundaryPos=InstrB(RequestBin,boundary&getByteString("--")))
Membersvariableofobjectsareputinadictionaryobject
DimUploadControl
SetUploadControl=CreateObject("Scripting.Dictionary")
Getanobjectname
Pos=InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
Pos=InstrB(Pos,RequestBin,getByteString("name="))
PosBeg=Pos+6
PosEnd=InstrB(PosBeg,RequestBin,getByteString(chr(34)))
Name=getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
PosFile=InstrB(BoundaryPos,RequestBin,getByteString("filename="))
PosBound=InstrB(PosEnd,RequestBin,boundary)
Testifobjectisoffiletype
IfPosFile0AND(PosFile<PosBound)Then
GetFilename,content-typeandcontentoffile
PosBeg=PosFile+10
PosEnd=InstrB(PosBeg,RequestBin,getByteString(chr(34)))
FileName=getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
Addfilenametodictionaryobject
UploadControl.Add"FileName",FileName
Pos=InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
PosBeg=Pos+14
PosEnd=InstrB(PosBeg,RequestBin,getByteString(chr(13)))
Addcontent-typetodictionaryobject
ContentType=getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add"ContentType",ContentType
Getcontentofobject
PosBeg=PosEnd+4
PosEnd=InstrB(PosBeg,RequestBin,boundary)-2
Value=MidB(RequestBin,PosBeg,PosEnd-PosBeg)
Else
Getcontentofobject
Pos=InstrB(Pos,RequestBin,getByteString(chr(13)))
PosBeg=Pos+4
PosEnd=InstrB(PosBeg,RequestBin,boundary)-2
Value=getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
EndIf
Addcontenttodictionaryobject
UploadControl.Add"Value",Value
Adddictionaryobjecttomaindictionary
UploadRequest.Addname,UploadControl
Looptonextobject
BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
Loop
EndSub
Stringtobytestringconversion
FunctiongetByteString(StringStr)
Fori=1toLen(StringStr)
char=Mid(StringStr,i,1)
getByteString=getByteString&chrB(AscB(char))
Next
EndFunction
Bytestringtostringconversion
FunctiongetString(StringBin)
getString=""
ForintCount=1toLenB(StringBin)
getString=getString&chr(AscB(MidB(StringBin,intCount,1)))
Next
EndFunction
%>
test.mdb(dsn称号:upload)
----------------------------------------
表pic:
id:主动加
filename:文本
type:文本
what:ole
-----------------------------------------
存成单个文件,放在一个目次下,翻开(必需用http://...)getfile.htm
上传一个.gif或.jpg就能够显现了。
关于年夜文件在显现程序(showpic.asp)中大概会用到轮回和getchunk办法。本人往做。记着,因为ASP今朝临时不撑持二举行制读写,只能存二进制到数据库中。
使用cdonts,可以发送、查看邮件,实现webmail的功能。结合wsh,可以实现对nt主机的管理,如nt用户管理、iis虚拟主机设置、exchange邮箱设置等等,就像管理本地机一样方便。 我想问如何掌握学习节奏(先学什么再学什么)最好详细点? 完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。 Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点) Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。 ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。 先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习 以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
页:
[1]