仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 423|回复: 7
打印 上一主题 下一主题

[学习教程] ASP网页编程之用ASP和VBScript上载文件(二)

[复制链接]
分手快乐 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:47:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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版会好点吧
沙发
发表于 2015-1-19 23:50:51 | 只看该作者
运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-28 15:55:05 来自手机 | 只看该作者
学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
蒙在股里 该用户已被删除
地板
发表于 2015-2-5 21:32:38 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
简单生活 该用户已被删除
5#
发表于 2015-3-4 00:28:47 | 只看该作者
虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。
莫相离 该用户已被删除
6#
发表于 2015-3-11 14:56:24 | 只看该作者
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
因胸联盟 该用户已被删除
7#
发表于 2015-3-18 22:25:47 | 只看该作者
ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
再现理想 该用户已被删除
8#
发表于 2015-3-26 17:40:03 | 只看该作者
哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-1 18:05

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表