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

摘要:在基于/的应用环境中,上传各种类型的文件一直是困扰用户文件管理应用的难题之一。在HTTP中上传文件有三种机制:RFC1867,PUT和WebDAV。常用的实现方法是利用在RFC1867中引入的一个新类型:File以及ADO Stream对象。本文对上述上传方法及实现原理作了论述,并给出了具体解决实例。
  ASP FILE对象
  当前,基于/模式的应用比较流行。当用户需要将文件传输到上时,常用方法之一是运行FTP并将每个用户的FTP默认目录设为用户的Web主目录,这样用户就能运行FTP客户程序并上传文件到指定的 Web目录。这就要求用户必须懂得如何使用FTP客户程序。因此,这种解决方案仅对熟悉FTP且富有经验的用户来说是可行的。
 如果我们能把文件上传功能与Web集成,使用户仅用Web就能完成上传任务,这对于他们来说将是非常方便的。但是,一直以来,由于File System Object的仅能传送文本文件的局限,所以ASP最大的难题就是文件上传问题。下面介绍的就是如何在基于HTTP协议的网页中实现文件的上传。
  一.通过HTTP上传的三种机制
  通过HTTP上传有三种机制:RFC1867, PUT 和 WebDAV。
  PUT 是在HTTP 1.1引入了一个新的HTTP动词。当web收到一个HTTP PUT和对象名字,它将会验证用户,接收HTTP流的内容,并把它直接存入web。由于这可能会对一个web站点造成破坏,并且还会失去HTTP最大的优势:可编程性。在PUT的情况下,自己处理请求:没有空间让CGI或者ASP应用程序介入。唯一让你的应用程序捕获PUT的方法是在低层操作,ISAPI过滤层。由于相应的原因,PUT的应用很有限。
  而WebDAV允许web内容的分布式认证与翻译。它引入了几种新的HTTP动词,允许通过HTTP上传,锁定/解锁,登记/检验web内容。Office 2000中的"Save to web" 就是通过WebDAV来实现的。如果你所感兴趣的一切都是上传内容,WebDAV应用得非常出色,它解决了很多问题。
 然而,如果你需要在你的web应用程序里面上传文件,WebDAV对你就毫无用处可言。象HTTP PUT一样,那些WebDAV的动词是被解释的,而不是web应用程序。你需要工作在ISAPI过滤层来访问WebDAV的这些动词,并在你的应用程序中解释内容。
  RFC1867 (http://www.ietf.org/rfc/rfc1867.txt) 最终被W3C在HTML3.2中接受前,是作为一种建议标准。它是一种非常简单但是功能很强大的想法:在表单字段中定义一个新类型。
<INPUT TYPE="FILE">
  并且在表单本身加入了不同的编码方案,不再使用典型的:

时间: 2024-09-30 13:00:57

ASP文件上传原理分析及实现实例的相关文章

asp文件上传的速度和上传组件有关吗

问题描述 asp文件上传的速度和上传组件有关吗,我有两个上传文件源代码,一个上传组件是无惧上传组件一个是upload_5xsoft程序运行时前者上传文件90M很快上传了(都是本地上传到本地的),后者10M的都要很慢求解等大虾~~~ 解决方案 解决方案二:有关系有的组件做得很好上传很快解决方案三:由关系吧解决方案四:有关系的,尽量用第三方组件或者.Net上传,纯脚本写的效率不高

原创的ASP文件上传函数库,比动网、amao的都差了很多,不过是学习的好资料

原创的ASP文件上传函数库,比动网.amao的都差了很多,不过是学习的好资料 54powerman 说明:如果你需要file表单的串值,用GetFullName("file")如果需要file表单的文件名,用GetFileName("file")如果需要file表单的扩展名,用GetExtName("file")如果需要普通文本表单的值,用MyRequest("password")如果需要file表单的二进制值,也是用MyRe

asp文件上传组件 Persits.UploadProgress

<!-- 本文章提供了asp文件上传组件 persits.uploadprogress来实时文件上传功能哦. <%@enablesessionstate=false%> <%  response.expires = -1  pid = request("pid")  timeo = request("to")  set uploadprogress = server.createobject("persits.uploadprogr

BootStrap Progressbar 实现大文件上传的进度条的实例代码_javascript技巧

1.首先实现大文件上传,如果是几兆或者几十兆的文件就用基本的上传方式就可以了,但是如果是大文件上传的话最好是用分片上传的方式.我这里主要是使用在客户端进行分片读取到服务器段,然后保存,到了服务器段读取完了之后将分片数据进行组合. 2.前端代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UploadTest2.aspx.cs" Inherits="Htm

ASP文件上传神功 第一重(单个图片上传到数据库)

上传|数据|数据库 第一重:单个图片上传到数据库 这个问题已经不是什么新鲜问题了,网上也有大把的教程,但大多数是授人以鱼,而不授人以渔,经过辛苦的资料收集,思考,调试,整理,我基本上已经把这个问题从原理上搞清楚了,现在根据我自己的理解,在范例程序的基础上,加以解释,希望能对部分网友(比我还菜的:-))有所帮助. 请诸位大虾能对其中的不正或不良这处予以指正. 程序中stream对象的用法上参考了"化境HTTP上传程序 Version 2.0"在代码,在此对稻香老农和梁无惧表示衷心的感谢和

一段简单 ASP文件上传实例

本教程将告诉你需要建立一个简单的应用程序,使用户能够上传PDF文件到服务器的步骤,删除现有的文件和查看他们的浏览器中的文件.这个例子使用我们自己的dgFileUpload组成部分,你可以下载一个15天的试用版在这里,您可以按照教程和测试自己的服务器完成的应用程序.所有的源代码,随着小Access 2000数据库教程在本教程中使用,可以下载在这里作为一个ZIP档案. 在下载并取消荏苒存档,您的网站根目录下创建(如的'C: inetpub wwwroot的 dgUpload'),并把两个ASP页(新

PHP单文件上传原理及上传函数的封装

服务器(临时文件)-->指定目录,当文件进入服务器时它就是临时文件了,这时操作中要用临时文件的名称tmp_name. //在客户端设置上传文件的限制(文件类型和大小)是不安全的,因为客户能通过源代码修改限制,所以在服务端这里设置限制. //设置编码为UTF-8,以避免中文乱码 header('Content-Type:text/html;charset=utf-8'); //通过$_FILES接收上传文件的信息 $fileInfo = $_FILES['myFile']; function up

asp文件上传错误&amp;#039;800a0005&amp;#039;的解决方法

一.治标方法: IE7以上版本其实把文件上传是否发送完整的本地路径做成一个选项,在IE的Internet选项中可以设置.如下图: 1.Internet安全选项: 2.完整路径选项设置: 由于默认是禁用的,所以会出现问题,把它启用就可以解决问题了.但这是治标的方法,如果网页是面向普通用户的,你不可能要求所有用户都来改变这个设置. 二.治本方法: 治本的方法只能靠改程序了.对于图片预览的,目前我还没有很好的方法获取到图片的本地完整路径,所以只能通过判断浏览器的版本,如果是IE7和FireFox3的版

php图片文件上传详细分析

upload_err_ok              no error occurred. 上传成功   upload_err_ini_size        the uploaded file exceeds the maximum value specified in the php教程.ini file. 超出最大上传尺寸 upload_err_form_size       the uploaded file exceeds the maximum value specified by