65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 VBScript 类上传文件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.91/5 (43投票s)

2002年5月30日

2分钟阅读

viewsIcon

409066

downloadIcon

9002

使用 VBScript 类上传文件。当您无法部署自定义 COM 对象时,此方法非常有用。

引言

市面上有很多组件可以允许您的 ASP 应用程序处理文件上传。但是,如果您处于不允许安装任何组件的情况下,那么这个 vbsUpload 将对您有所帮助。在我的学术项目中,我被禁止在服务器上使用这些组件,因此找到了一种从客户端上传文件的替代方案。

代码支持

vbsUpload.asp
此文件包含文件上传的全部逻辑。Request.Binary read 方法用于读取客户端作为 POST 请求的一部分发送的原始数据。ASP 提供了一种应用 URL 编码规则的方法,但没有公开的解码方法。URLDecode 方法执行 URL 解码。然后解析原始数据,并将文件元素和表单元素分别保存在两个集合对象中。

Process_File.asp
这是一个简单的 asp 文件,用于上传 multipart/form-data。一旦数据可用,此文件会将文件保存到硬盘上。文件内容如下:
<%@ Language="VBScript" %>
<!-- #include file="vbsUpload.asp" -->
<form method=post
      enctype="multipart/form-data"
      action=<%=request.servervariables("script_name")%>>
Your File:<BR><input type=file name=YourFile><BR><BR>
<input type=submit name=submit value="Upload">
</form>
<%
Dim objUpload, lngLoop

If Request.TotalBytes > 0 Then
	Set objUpload = New vbsUpload

  For lngLoop = 0 to objUpload.Files.Count - 1
    'If accessing this page annonymously,

    'the internet guest account must have

    'write permission to the path below.

    objUpload.Files.Item(lngLoop).Save "c:\Newupload\"

	Response.Write "File Uploaded"
	Next

End if
%>
Process_DB.asp
这是另一个简单的文件,用于获取 multipart/form-data,但会将数据保存到数据库中。

conn.asp
这用于使用 SQLServer 存储文件。我提供了创建表的脚本。您可以创建相同表格式并使用它。不要忘记填写正确的连接字符串。

Download.asp
此文件用于从数据库中检索二进制数据并在 Web 上显示。
注意:二进制数据使用 "Scripting.FileSystemObject" CreateTextFile 方法写入文件。在 Excel 和其他二进制文件的情况下,这不能正常工作。因此,请仅将您的使用限制为纯文本文件。当文件上传到数据库时,会记录内容类型,并将二进制内容作为 SQL Server 中的 Image 数据类型保存。使用 download.asp,二进制数据会以正确的内容类型写回客户端。因此,数据库文件上传和下载没有问题。您可以使用 Process_DB.asp 上传所有文件类型(Excel、jpg 等)。

结论

现在,我可以使用 ASP 和 VBScript 轻松处理文件上传。我将其用于 Windows 2000 Server 和 Internet Explorer 5。在服务器或客户端的其他版本上可能存在错误。请将此代码视为仅供演示的版本。除非您将其修改为生产版本,否则它不适用于生产环境。
使用 VBScript 类进行文件上传 - CodeProject - 代码之家
© . All rights reserved.