Oh
My god!
Wait
<p align="center">关于在浏览器中文件上载的方法与实现<br>
<span class="nava"><font color="#cc9933">2000-04-08· 刘建莹·CPCW</font></span></p>
<p><b>一、问题引入</b><br>
<br>
在现在的管理信息系统中,比较先进的都已采用浏览器/服务器的模型,在这种模型中都要涉及到客户端与服务器端的信息交互问题,从服务器端到客户端的信息传递技术已经比较成熟,这里主要讨论从客户端到服务器端的文件上载问题,基于Microsoft的IE4.0、IIS4.0、ASP(Active
Server Page)和标准HTML语言。</p>
<p><b>二、解决方法</b><br>
<br>
在ASP页面中,利用HTML中的Form元素来实现。<br>
在Form元素的语法中,EncType表明提交数据的格式,Method表明提交的方法(Get/Post)。在IE4.0 及以后的版本中都支持&quot;multipart/form-data&quot;这种格式,相应的Method方法必须是Post,表明要上载文件到服务器。当然同时在服务器相应的WEB站点上要把属性设为可写。下面是一个示例:&lt;form
enctype=&quot;multipart/form-data&quot; action=&quot;http://dev_d/upload/post/cpshost.dll?PUBLISH?http://dev_d/upload/UserUploadAction.asp&quot;<br>
method=post id=form2 name=form2&gt;</p>
<p> 1. Press the Browse button and choose a File to upload from your computer.<br>
&lt;br&gt;&lt;input type=&quot;file&quot; id=file1 name=file1&gt;<br>
2. Upload the file.<br>
&lt;br&gt;&lt;input type=hidden size=80 name=&quot;TargetURL&quot; value=&quot;http://dev_d/upload/post&quot;&gt;<br>
&lt;input type=submit value='Upload' id=submit1 name=submit1&gt;<br>
&lt;/form&gt;</p>
<p><b>三、实现要素</b><br>
<br>
1 Form的enctype=&quot;multipart/form-data&quot;。<br>
2 Form的action=&quot;(UserURL)/cpshost.dll?PUBLISH?(UserURL)/UserUploadAction.asp&quot;。<br>
说明:cpshost.dll是用于文件上载的动态链接文件,其后的PUBLISH参数也为固定,而(UserURL) 指的是完整的URL地址,如:http://dev_d/upload。如果PUBLISH后没有参数,上载文件完成后,只是简单返回文件已经上载;如果PUBLISH后跟上完整URL的ASP文件,就可以用ASP来处理文件上载后的其他操作,如修改相应的数据库数据。可以在ASP文件中用<br>
Request.Form(&quot;Variable&quot
来访问相应参数。对上载文件来说,Variable有四种可能的值:<br>
FileName 文件名称(不包括后缀),FileExtention 文件后缀(包括&quot;.&quot
,FilePath 上载文件<br>
保存的服务器端路径,FileSize 上载文件的字节大小。<br>
3 Form的Method的方法必须为Post。<br>
4 Form中必须有一个input元素,而且input的属性type=&quot;file&quot;。<br>
说明:如果要上载多个文件,有多个input元素就可以了,但至少有一个有效文件,否则会出错。系统会自动产生一个文本区域和一个&quot;browse...&quot;按钮,可以直接在文本区域内输入文件路径名称,或按&quot;browse...&quot;按钮,从文件对话框中选择一个文件。<br>
5 Form中必须有一个隐含(即type=hidden)input元素,而且input的属性name=&quot;TargetURL&quot;,属性<br>
value=&quot;(UserURL)&quot;,(UserURL)即为上载文件保存位置的URL地址。<br>
说明:文件保存位置的URL地址属性必须设为可写,否则会返回此URL地址没有写的权限。<br>
6 Form中必须有一个submit按钮,即input的属性type=&quot;submit&quot;,此按钮即为上载按钮。或者在其他相关事件中调用此Form的Submit方法。但两种方法实际上本质相同,只不过用方法调用还可以在上载前加上其它处理代码,如数据的有效性检查等。</p>
<p><b>四、完整实例</b><br>
<br>
1 用户上载文件页面UserUpload.asp<br>
&lt;% response.expires=0 %&gt;<br>
&lt;HTML&gt;<br>
&lt;HEAD&gt;<br>
&lt;META NAME=&quot;GENERATOR&quot; Content=&quot;Microsoft Visual Studio 6.0&quot;&gt;<br>
&lt;/HEAD&gt;</p>
<p>&lt;BODY&gt;</p>
<p>&lt;form enctype=&quot;multipart/form-data&quot;<br>
action=&quot;http://dev_d/upload/post/cpshost.dll?PUBLISH?http://dev_d/upload/UserUploadAction.asp&quot;<br>
method=post id=form2 name=form2&gt;</p>
<p>&lt;table BORDER=0 CELLSPACING=3 CELLPADDING=3&gt;<br>
&lt;tr&gt;<br>
&lt;td valign=top&gt;&lt;span &gt;1. &lt;/span&gt;<br>
&lt;td&gt;Press the Browse button and choose a File to upload from your computer.<br>
&lt;br&gt;&lt;input type=&quot;file&quot; id=file1 name=file1&gt;<br>
&lt;br&gt;&lt;input type=&quot;file&quot; id=file2 name=file2&gt;<br>
&lt;/td&gt;<br>
&lt;tr&gt;<br>
&lt;TD vAlign=top&gt;&lt;SPAN &gt;2. &lt;/SPAN&gt;<br>
&lt;TD&gt;Upload the file.<br>
&lt;br&gt;&lt;input type=hidden size=80 name=&quot;TargetURL&quot; value=&quot;http://dev_d/upload/post&quot;&gt;<br>
&lt;input type=submit value='Upload' id=submit1 name=submit1&gt;<br>
&lt;/td&gt;<br>
&lt;/table&gt;<br>
&lt;/form&gt;<br>
&lt;/BODY&gt;<br>
&lt;/HTML&gt;</p>
<p>2 用户上载文件处理页面UserUploadAction.asp<br>
&lt;% Response.Buffer = TRUE %&gt;<br>
&lt;% Response.expires=0 %&gt;</p>
<p>&lt;HTML&gt;<br>
&lt;BODY&gt;<br>
&lt;H3&gt;Upload Status:&lt;BR&gt;&lt;/H3&gt;</p>
<p>&lt;span style=&quot;color:gray&quot;&gt;&lt;HR&gt;<br>
&lt;%<br>
For I = 1 To Request.Form(&quot;FileName&quot
.Count<br>
Response.Write &quot;Uploaded File: &lt;B&gt;&quot; &amp; Request.Form(&quot;FileName&quot
(I) &amp; Request.Form(&quot;FileExtention&quot
(I) &amp;&quot;&lt;/B&gt;&lt;BR&gt;&quot;<br>
Response.Write &quot;Server Path: &lt;B&gt;&quot; &amp; Request.Form(&quot;FilePath&quot
(I) &amp; &quot;&lt;/B&gt;&lt;BR&gt;&quot;<br>
Response.Write &quot;Size: &lt;B&gt;&quot; &amp; Request.Form(&quot;FileSize&quot
(I) &amp; &quot; bytes&lt;/B&gt;&lt;br&gt;&quot;<br>
Next<br>
<br>
FileName = Request.Form(&quot;FilePath&quot
(1) &amp; Request.Form(&quot;FileName&quot
(1) &amp; Request.Form(&quot;FileExtention&quot
(1)<br>
%&gt;<br>
&lt;hr&gt;&lt;br&gt;</p>
<p>&lt;%<br>
if request.form(&quot;FilePath&quot
.count = 0 then<br>
Response.Write (&quot;No file was received.&quot
<br>
Response.End<br>
else<br>
Response.Write (filename+&quot; File was received.&quot
<br>
end if<br>
%&gt;<br>
&lt;/span&gt;</p>
<p>&lt;/BODY&gt;<br>
&lt;/HTML&gt;</p>