Отправьте файл с помощью Response.BinaryWrite () и затем удалите его - PullRequest
2 голосов
/ 20 августа 2009

В рамках проекта Classic ASP пользователь должен иметь возможность загрузить файл, который динамически извлекается из zip-архива и отправляется через Response.BinaryWrite (), просто вызывая document.asp? Id = [некоторый идентификатор Вот]".

Извлечение и отправка не являются проблемой, но мне нужно удалить извлеченный файл после завершения загрузки. Я никогда не делал ASP или VBA раньше, и я думаю, именно поэтому я застрял здесь.

Я попытался удалить файл сразу после Response.WriteBinary () с помощью FileSystemObject.DeleteFile (), но это привело к ошибке 404 на стороне клиента.

Как мне дождаться окончания загрузки, а затем выполнить дополнительные действия?

Редактировать: так выглядит мой код:

'Unzip a specified file from an archive and put it's path in *document*

set stream = Server.CreateObject("ADODB.Stream")
stream.Open
stream.Type = 1 ' binary
stream.LoadFromFile(document)

Response.BinaryWrite(stream.Read)

'Here I want to delete the *document*

Ответы [ 3 ]

1 голос
/ 20 августа 2009

Я подозреваю, что точка, которую вы вызываете методом DeleteFile, файл, который вы пытаетесь удалить, в настоящий момент заблокирован чем-то другим, вопрос в том, что?

Попробуйте включить: -

 stream.Close()

после вашего BinaryWrite. Также убедитесь, что вы сделали то же самое с компонентом, который вы использовали для извлечения файла. Если компонент не предлагает никаких методов «закрытия», они пытаются присвоить Nothing переменным, ссылающимся на них.

0 голосов
/ 20 августа 2009

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

Я думаю, что это самый простой способ управления, но, кроме того, я бы предпочел решение, при котором документ будет удален после загрузки.

0 голосов
/ 20 августа 2009

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

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