上传后的访问请求(ASP经典)

时间:2018-07-05 08:52:40

标签: asp-classic

因此,正如我所发现的,当我拥有一个带有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 %> 
...

我现在的问题是如何摆脱它或解决此问题。如果还有其他方法,我不想在弹出窗口中打开上载。这是我唯一能想到的解决方案。

完全是一个对象,它将检查Formrequest。或者,可以在文件顶部进行检查,我必须使用哪个对象?

谢谢您的建议。

1 个答案:

答案 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

如果您想坚持自己的实现,则可以通过查看它们用于执行此操作的代码,来弄清楚如何获取多部分/表单数据编码的数据流中的表单变量。