因此,正如我所发现的,当我拥有一个带有enctype="multipart/form-data"
的表单并上载文件时,我将无法再访问对象request
。显示以下错误:
调用BinaryRead后无法使用通用Request集合。
在检查了一些资源之后,我偶然发现了一条声明:“这是设计使然”。好吧,好的,这里不是要对设计决策进行判断。
为了给您快速的概述,让我逐步介绍代码:
if request("todo") = "add" then
Set Form = New ASPForm
category = request("category")
title = request("title")
if len(Form("upload_file").FileName) > 0 then
filename = Form("upload_file").FileName
DestinationPath = Server.mapPath("personal/allrounder/dokumente/")
Form.Files.Save DestinationPath
end if
end if
到目前为止,这里没有什么特别的。但是,稍后,当我尝试访问我的request
对象时,会发生上述错误:
<% if request("todo") = "new" then %>
...
我现在的问题是如何摆脱它或解决此问题。如果还有其他方法,我不想在弹出窗口中打开上载。这是我唯一能想到的解决方案。
完全是一个对象,它将检查Form
和request
。或者,可以在文件顶部进行检查,我必须使用哪个对象?
谢谢您的建议。
答案 0 :(得分:1)
曾经有一个非常流行的ASP类/组件可以解决ASP文件上传问题。该组件的站点已被删除,但代码在此处镜像:
https://github.com/romuloalves/free-asp-upload
您可以在自己的页面上包含此ASP页面,并在页面上实例化该类以获取对表单中文件的访问,还可以对表单变量进行访问。这是一段示例代码(Upload.Form
访问表单字段):
Dim uploadsDir : uploadsDir = server.mapPath(".") ' whatever you want
Dim Upload, ks, fileKey, mailto
Set Upload = New FreeASPUpload
call Upload.Save(uploadsDir)
ks = Upload.UploadedFiles.keys
for each fileKey in ks
Response.write(fileKey & " : " & Upload.UploadedFiles(fileKey).FileName & "<br/>")
next
mailto = Upload.form("mailTo")
Set Upload = Nothing
如果您想坚持自己的实现,则可以通过查看它们用于执行此操作的代码,来弄清楚如何获取多部分/表单数据编码的数据流中的表单变量。