文件的上传与接收

用户可以通过表单上传文件。

表单准备

如果表单要包括文件上传组件,在定义表单的时候,要将enctype设置为"multipart/form-data",例如:

<form enctype='multipart/form-data' action='accept.htm' method='post' id='form1' name='form1'>
</form>

否则,HttpServer将无法收到用户上传的文件。

在表单插入一个type为file的input元素,即可实现文件上传,例如:

<input type='file' name='up1' id='up1'>

如果要允许用户选择多个文件上传,加上multiple属性即可,例如

<input type='file' name='up2' id='up2' multiple>

下面是一个完整的文件上传表单:

<form enctype='multipart/form-data' action='accept.htm' method='post' id='form1' name='form1'>
单文件上传: <input type='file' name='up1' id='up1'><br/><br/>
多文件上传: <input type='file' name='up2' id='up2' multiple><br/><br/>
<input Type='submit' name='Sumbit' id='Sumbit' value='确定'>
</form>

接收文件

HttpRequest的e参数有个Files属性,这是一个字典,键为文件上传组件的name属性,值是一个字符串集合,包括用户通过这个上传组件上传的所有文件名。

HttpRequest的e参数有个SaveFile方法,用于保存接收到的文件,其语法为:

SaveFile(Key,UploadFile,LocalFile)

Key 文件上传组件的name属性
UploadFile 用户上传的文件名称,不含路径。
LocalFile 要保存到本地的文件名称,含路径

完整示例

将HttpRequest设置为以下代码:

Select Case e.Path
    Case "upload.htm"
        Dim sb As New StringBuilder
        sb.appendLine("<form enctype='multipart/form-data' action='accept.htm' method='post' id='form1' name='form1'>")
        sb.appendLine(
"
单文件上传: <input type='file' name='up1' id='up1'><br/><br/>")
        sb.appendLine(
"
多文件上传: <input type='file' name='up2' id='up2' multiple><br/><br/>")
        sb.appendLine(
"<input Type='submit' name='Sumbit' id='Sumbit' value='
确定'>")
        sb.appendLine("</form>")
        e.WriteString(sb.ToString)
    Case "accept.htm"
        Dim sb As New StringBuilder
        For Each key As String In e.Files.Keys
            sb.AppendLine(key &
"
上传" & e.Files(key).Count & "个文件,分别是:</br>")
            For Each fl As String In e.Files(key)
                sb.AppendLine(fl & "<br>")
                e.SaveFile(key,fl,"d:\web\uploadfiles\" & fl)
'
保存接收到的文件
           
Next
            sb.AppendLine("</br>")
        Next
        sb.AppendLine("以上文件服务器已正确接收并保存!")
        e.WriteString(sb.ToString)

End
Select

上面的代码生成了两个页面,upload页面用于上传文件:

accept.htm页面用于显示并保存用户上传的文件:


本页地址:http://www.foxtable.com/mobilehelp/topics/0030.htm