Запрос доступа после загрузки (ASP classic) - PullRequest
0 голосов
/ 05 июля 2018

Итак, как я выяснил, когда у меня есть форма с enctype="multipart/form-data" и я загружаю файл, я больше не могу получить доступ к объекту request. Отображается следующая ошибка:

Невозможно использовать универсальную коллекцию запросов после вызова BinaryRead.

После проверки некоторых ресурсов я наткнулся на утверждение, которое гласит: «Это сделано намеренно». Ну, хорошо, не здесь, чтобы судить о дизайнерских решениях.

Чтобы дать вам краткий обзор, позвольте мне показать вам код:

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. В качестве альтернативы может быть проверка в верхней части файла, какой объект я должен использовать?

Спасибо за любые предложения.

1 Ответ

0 голосов
/ 05 июля 2018

Раньше был очень популярный класс / компонент 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

Если вы хотите придерживаться своей собственной реализации, вы, вероятно, сможете выяснить, как получить переменные формы в потоке данных, закодированных в несколько частей / данных формы, взглянув на код, который они используют для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...