• 神奇的瘦身利器让你轻松瘦身,放心变美

asp 文件上传(ASP文件上传原理分析及实现实例)

好闻分享 wpadmin 2年前 (2022-04-12) 153次浏览 0个评论

Asp文件上传(ASP文件上传原理分析及实现实例)摘要:在基于/的应用环境中,上传各种类型的文件一直是文件管理应用中困扰用户的问题之一。HTTP中有三种上传文件的机制:RFC1867、PUT和WebDAV。常见的实现 *** 是使用RFC1867中引入的新类型:File和ADO流对象。本文讨论了上述上传 *** 和实现原理,并给出了具体的解决方案实例。ASP文件对象目前,基于/mode的应用相当流行。当用户需要将文件传输到时,常用的 *** 之一就是运行FTP,将每个用户的FTP默认目录设置为用户的Web home目录,这样用户就可以运行FTP客户端程序,将文件上传到指定的Web目录。这就需要用户知道如何使用FTP客户端。所以这种解决方案只对熟悉FTP,有经验的用户可行。如果能够将文件上传功能与Web集成,让用户只需用Web就能完成上传任务,对他们来说会非常方便。但长期以来,由于只能传输文本文件的文件系统对象的限制,ASP更大的问题就是文件上传。下面介绍如何基于HTTP协议在网页中上传文件。一、通过HTTP上传的三种机制通过HTTP上传有三种机制:RFC1867、PUT和WebDAV。PUT是HTTP 1.1中引入的新HTTP动词。当web接收到一个HTTP PUT和对象名称时,它将对用户进行身份验证,接收HTTP流的内容,并直接将其存储在web中。由于这可能会对网站造成损害,它也将失去HTTP的更大优势:可编程性。在PUT的情况下,自己处理请求:没有CGI或ASP应用程序介入的空余地。您的应用程序捕获PUT的唯一 *** 是在较低的级别上操作,即ISAPI过滤层。由于相应的原因,看跌期权的应用受到了限制。WebDAV允许Web内容的分布式认证和翻译。它引入了几个新的HTTP动词,允许通过HTTP上传、锁定/解锁和注册/检查web内容。Office 2000中的“保存到web”是通过WebDAV实现的。如果你感兴趣的只是上传内容,WebDAV应用的非常好,它解决了很多问题。但是,如果你需要在你的web应用中上传文件,WebDAV对你就没用了。像HTTP PUT一样,解释那些WebDAV动词,而不是web应用程序。您需要在ISAPI过滤器层中访问WebDAV的这些动词,并解释应用程序中的内容。RFC 1867(http://www.ietf.org/rfc/rfc1867.txt)在最终被W3C在HTML3.2中接受之前被用作建议标准。这是一个非常简单但强大的想法:在表单字段中定义一个新类型。

不同的编码方案被添加到表单本身,而不是典型的:

相反,请使用:

与默认的“application/x-url-encoded”表单编码方案相比,这种编码方案在传输大量数据时效率要高得多。URL代码只有非常有限的字符集。任何超出字符集的字符都必须用“%nn”替换,其中nn代表相应的两个十六进制数字。例如,即使是普通的空大小写字符也应该替换为“%20”。但是,RFC1867使用多部分MIME编码,就像通常在电子邮件中看到的那样。它并不编码传输大量数据,只是在数据周围添加一些简单但实用的报头。各大厂商都采用了建议的“浏览……”按钮,用户可以方便地使用本地的”打开文件…”对话框选择要上传的文件。RFC1867仍然保留了将大多数文件上传到web应用程序的灵活 *** 。摆放非常有限。WebDAV对于内容作者(如FrontPage用户)很有用,但对于希望将文件上传添加到web应用程序中的web开发人员来说,它很少使用。因此,RFC1867是向web应用程序添加文件上传的更佳方式。在实际应用中,过账受体免费提供。ASP不理解“多部分/形式数据”编码方案。相反,提供了Posting Acceptor,这是一个ISAPI应用程序,它接受上传完成后向ASP页面的重新发布。软件工匠SA-FileUp是最早的商业活动服务器之一。经过几次改进,它现在作为一个纯ASP存在。2.基于ASP的文件上传原理分析。基本原理是:利用ADO流对象的BinaryRead *** 读出表单中的所有数据,从中截取需要的文件数据,保存为二进制文件。下面是一个上传文件页面的例子(upload.htm):

程序中使用了file对象,这样在Upload.asp用BinaryRead *** 读取的原始数据不仅是所选文件本身的数据,还有用户硬盘上文件的路径和类型的描述,提交页面的形式等相关信息,这样我们就需要提取文件的具体内容。据分析,头信息和数据的分割线是两对回车和换行符,尾部也有分隔信息。我们可以通过以下 *** 获得文件数据。

Dim表单数据。FormSize,DataStart,CLStr,DivStr FormSize=Request。TotalBytes FormData=Request。binary read(FormSize)CLStr = ChrB(13)& ChrB(10)DataStart = InStrB(FormData。CLStr&CLStr) +4 ‘4是两对回车的长度newlines divstr = leftb (formdata,instrb (formdata,CLStr)-1)datasize = instrb(data start+1,formdata,div str)-data start-2 formdata = midb(formdata,data start,datasize)

FormData是文件的内容。中间根据需要,可以进行相应的治疗。最后一项工作是保存文件。有两种保存方式:一种是在VB或VC程序中使用二进制文件操作 *** ,在项目中添加合适的类型库,最后编译成DLL文件,使用时再注册DLL文件。文件存储程序如下:

public Function save file(Pathname As String)As String Dim obj context As object context Dim obj Request As Request Set obj context = getobject context()Set obj Request = obj context(” Request “)’下面的代码是关于文件存储的操作dimformdata () a *** yte,clstr,divstr dimdata start aslong,DataSize As Long DataSize = obj Request。total bytes Redim FormData(DataSize-1)FormData = obj request。’ binary read(DataSize)CLStr = ChrB(13)& ChrB(10)DataStart = InStrB(FormData,CLStr & CLStr)+4 DivStr = LeftB(FormData,InStrB(FormData,CLStr)-1)DataSize = InStrB(DataStart+1,FormData,DivStr)-DataStart-2 FormData = midb(FormData,data start,DataSize)’创建一个二进制文件并将FormData写入其中。打开二进制文件as1输入# 1的路径名,,formdataclose # 1save file = “OK!”结束功能

第二种 *** 是使用ADO流中提供的二进制文件操作 *** 。保存文件的语句是:streamobj.savetofile (filename,2)。在这种操作中,我们可以将相关的操作存储在一个类文件中,应用时直接将类文件包含在ASP程序中就可以了。具体处理 *** 请参考相关介绍。三。文件上传的实现 *** 。文件上传的例子可以用或不用 *** 来实现。对于类,比如微软的posting acceptor (mpa),是公司免费发布的,安装起来很简单。对于mpa,只需运行它的安装文件。在一般的dll形式中,我们需要注册。例如,要使用aspcnUP.dll,只需在Window 2000上执行regsvr32 [path]aspcnUP.dll,当出现注册成功的信息提示时即可使用。对于无类别,如http://www.5xsoft.com/’s无类别-upload_5xsoft。使用时,只需在处理程序中包含以下语句:

设置upload=new upload_5xSoft ‘以创建上传对象。

有关的属性和操作 *** ,请参阅的用户手册。以下是spcnUP.dll的例子,上传一些类型文件的源代码(upload.asp):

四。结束语的应用模式仍在快速发展。在ASP.NET,已经内置了文件上传的功能,使用起来非常简单方便。作为一种全新的技术,ASP.NET不仅仅是ASP的简单升级,而是一个全新的Web开发框架,包含了许多新的特性。ASP.NET提供了结构更清晰、更容易编写的代码。通过使用这些代码,我们可以更容易地重用和共享它们,从而开发出更实用的程序。


有肥胖困扰?专业瘦身老师教你1天瘦1斤

添加微信咨询:A-noweixin (手机长按可复制,加好友)

asp 文件上传(ASP文件上传原理分析及实现实例)
已帮助30000+人成功瘦身
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址