ASP网页编程之用ASP和VBScript上载文件(二)
因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。还无法完全实现一些企业级的功能:完全的集群、负载均横。vbscript|vbscript上载剧本的利用上面是开辟的上载剧本的使用典范。本文的下载文件供应例子中的文件和代码。将紧缩文件开释到一个路径下,为你的收集服务器设置一个假造路径。能够在扫瞄器中测试和启动uploadForm.html。
挪用剧本
上面是挪用上载BuildUploadRequest办法的路子。起首挪用一个全程dictionary:UploadRequest。然后挪用BuilUploadRequest办法,然后在自变量中传送到哀求原始二进制数据。
byteCount=Request.TotalBytes
RequestBin=Request.BinaryRead(byteCount)
DimUploadRequest
SetUploadRequest=CreateObject("Scripting.Dictionary")
BuildUploadRequestRequestBin
数据被分化并存储在dictionary工具中,并用Item()办法恢复。这些item数据能够保留在VBScript变量中,而且能够在代码的任何中央利用。数据能够作为呼应传送回客户机,或用在ASP代码中,或写进文件中及放进数据库中。
取回数据
UploadRequest工具的数据可用Item("key")函数举行存取。如今来思索一下如许的情形:要存取一个email把持的值。能够如许做:
email=UploadRequest.Item("email").Item("Value")
由于这是一个文本类把持,内容是一个字符串,这个字符串能够同任何别的VBScript字符串一样利用。关于二进制数据,能够用不异办法恢复内容:
picture=UploadRequest.Item("blob").Item("Value")
也能够存取别的信息,如文件名和content-type。他们是文本类把持。
contentType=UploadRequest.Item("blob").Item("ContentType")
filepathname=UploadRequest.Item("blob").Item("FileName")
在VBScript代码中利用数据
上载的数据能够同别的变量一样在VBScript代码中利用。好比说,它们能够作为呼应发送回客户机。
Youremailis:〈%=email%〉
Filenameofyoupictureis〈%=filepathname%〉
Filetypeofyourpictureis〈%=contentType%〉
二进制数据也能够发送回客户机。必需设置一个content-type,能够用BinaryWrite办法写二进制数据。
Response.ContentType=contentTypeResponse.BinaryWritepicture
向文件中写进上载数据
在文件类把持的情形下,目标一般是将二进制数据存进某个文件或数据库域,而不是将它们传送回客户机。这个目标是上载文件的固有特性。利用FileSystem工具将上载文件存进服务器的文件体系中。
起首创立FileSystem工具:
’CreateFileSytemObjectComponentSetScriptObject=Server.CreateObject("Scripting.FileSystemObject")
用FileSystem工具在路径中创立一个文件。路径能够是相对的,间接指向文件体系(如c: emp)。也能够是绝对的,到收集服务器界说的一个假造路径下。用mappath办法和PATH_INFO服务器变量将假造路径暗射到相对路径。
Write办法必要一个双字节字符串作为自变量,以是要将单字节数列转换成字符串。Write办法卖力转换这个双字节字符串,并用ASCII格局写它。这就创建了一个包括我们原始的单字节字符串的二进制内容的文件。我已将这个文件定名为“uploaded+filename”,这只是为了区分文件,你可使用任何别的文件名,如:
’CreateandWritetoaFileSetMyFile=ScriptObject.CreateTextFile(Server.mappath(Request.ServerVariables_("PATH_INFO"))&"uploaded"&filename)
Fori=1toLenB(value)
MyFile.Writechr(AscB(MidB(value,i,1)))
Next
MyFile.Close
将上载数据存进数据库
数据还能够被存进数据库。content-type也应当存进数据库中,以便今后显现数据。起首要创建与数据库的毗连,假定已设置了得当的DSN:
Setconn=Server.CreateObject("ADODB.Connection")
conn.open"DSN=wroxdns","user","pass"
然后从毗连中创立纪录集:
sql="SELECTPHOTO,CONTENTTYPEFROMMYTABLE"
Setrs=Server.CreateObject("ADODB.Recordset")
rs.Opensql,conn,3,3
纪录集创立以后,要将二进制数据放进数据库的blob域中:
picturechunk=picture&chrB(0)
rs.Fields("PICTURE").appendChunkpicturechunk
rs.Fields("CONTENTTYPE")=contentType
rs.Update
conn.close
在appendChunk办法中,我不能不办理一个臭虫。现实上我注重到,当二进制数占有奇数字节时,appendChunk办法就不传送最初一个字节。办理的举措是增添一个chr(0),以确保传送了一切的字节。大概另有别的举措,假如有的话,请告知我。
要失掉数据库的映象,利用不异的纪录集,并用准确的内容范例将它作为呼应发送回客户机。
Response.contentType=rs.Fields("CONTENTTYPE")
size=rs.Fields("PICTURE").ActualSize
blob=rs.Fields("PICTURE").GetChunk(size)
Response.binarywriteblob
结论
本文展示了一个完全的用VBScript举行文件上载的办法。编码完整是VBScript,自力于第三方产物。
起首会合先容上载的历程(用"multipart/form-data"型内容举行HTML传送)。然后具体先容上载的VBScript代码。入手下手时对操纵字符串和单字节数列的VBScript函数举行扼要回忆。然后先容了剧本的代码和上载数据的布局。
最初显现了这个剧本的多个用处,从利用ASP代码中的上载变量到数据库或文件体系中存储上载文件。
点击上面的链接,下载<ahref="http://www.asptoday.com/articles/images/20000316.zip">本文的例程代码。</p>大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧 运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点: 下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助... 虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。 最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。 ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
页:
[1]