📄 上传组件(1)-文章来自httpwww.aspcn.com asp中华网.txt
字号:
作者:cooljack
日期:00-5-29 上午 10:02:04
介绍 我们很多的朋友想编写一个上载组件,或者是一个无组件上传的文件,我想这篇文章对你们有帮助。这编文章中我将介绍一个很重要的属性multipart/form-data.如果你们对它非常了解,就请您跳过去吧!下篇我们会来具体讲讲怎样做一个上传组件 在线上传是指在客户端使用浏览器就将任意文件上传到服务器上。所以这个对我们的浏览器也是有要求的,需要支持RFC1867,Netscape 3.0 ,IE3.0以上的版本都是支持的(现在用得很广泛了,所以浏览器是没有问题了)。上传是通过,HTML的表单来进行的。在这个表单中有一个属性为:ECTYPE="multipart/form-data",当然这个表单中也得有个项,不然我们上传什么啊! ENCTYPE="multipart/form-data"指示浏览器发送多项格式数据到服务器。每个数据项拥有一个数字头。分开数据项的是一长条分隔符(后面可以看到)。到了服务器,我们再用程序来分离这些数据项。我们可以用ASP脚本,还有上传组件(下一节介绍)。
使用Request.BinaryRead方法来读取POST过来的数据 让我们来开始我们的上传过程吧!首先我们会来看一段标准的HTML代码,这个代码中的表单没有Enctype属性,但是使用了Request.BinaryRead方法来读取发送到服务器的没有解析的全部数据。这个方法需要一个参数,就是读取数据的长度。所以我们还得测试一下发来的数据的长度。测试长度有几种方法,比如环境变量Content_Length就能搞定,这里我们用Request.TotalBytes这个属性 Request.BinaryRead方法是ASP中自带的方法,我们之所以以前没有看到是因为使用Request.Form和Requst.QueryString更简单和实用。这两种方法已经把传来的数据分成了一个关联数组,我们只需调用就行了。但是这里我们就得用Request.BinaryRead方法。原因嘛,往下看就知道了。 下面的代码是没有使用Enctype属性的,文件名为test.htm: 下面是script.asp中代码: 注意:我们使用 MidB 函数来转换BinaryRead读取来的数据,使我们看看我们到底收到了什么数据,这里我们也能用Response.BinaryWrite来查看. 下面是提交后,script.asp执行的结果: Item1=test+test&Item2=Value2 我们一下就能认出这是标准的URL编码 现在我们加一个ENCTYPE="multipart/form-data"到我们的test.htm 的表单中去,然后再次提交,看看会出现什么,以下是执行后的结果: -----------------------------7ce9c39120306Content-Disposition: form-data; name="Item1"test test-----------------------------7ce9c39120306Content-Disposition: form-data; name="Item2"Value2-----------------------------7ce9c39120306-- 通过分隔线我们能够看到有明显的两段。每一段都包含着我们提交表单中的内容。另外每一段我们还能看到一些MIME头信息 现在我们用Request.Form方法来接收数据,嘻嘻,我们将什么也看不到,另外还有一段出错信息。如果没有ENCTYPE="multipart/form-data"我们用Request.Form看到只是想上传的文件名,现在就能看到上传的内容了,不过Request.Form就不能用了. 我们现在来操作一次:我们在test.htm上传表单中单击“浏览”按钮。这就会弹出一个文件选择框,在这里我们来选择你想上传的文件。你也可以直接在文本框中输入文件的路径。 注意:如果你的浏览器看不到“浏览”这个按钮的话,八成是你的浏览不支持上传。 在这里我选择了一个gif 图形,提交后看到的如下: -----------------------------7ce25134120306Content-Disposition: form-data; name="FileItem"; filename="D:\HomePage\New\bg.gif"Content-Type: image/gifGIF89a? ?
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -