|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
因为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版会好点吧 |
|