WriteFile по сравнению с TransmitFile для больших файлов, которые должны быть удалены из сервера после передачи

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

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

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

Каков лучший способ иметь дело с этим?

Существует BinaryWrite, также... действительно ли я мог циклично выполниться через поток файла, копируя его в сегментах?

5
задан tbischel 2 February 2010 в 20:05
поделиться

2 ответа

Вот хорошее решение, которое использует TransmitFile, но позволяет вам что-то делать после того, как это будет сделано с помощью делегата:

http: / /improve.dk/blog/2008/03/29/response-transmitfile-close-will-kill-your-application

Просто замените ведение журнала в конце на удаление файла.

4
ответ дан 14 December 2019 в 13:36
поделиться

Можно ли записать файл на диск (случайное имя и т.д.) и начать отправку, но добавить запись в таблицу БД с именем Временного файла, по истечении определенного вами Периода времени, провести некоторую очистку этих записей БД, и удалить файл с диска, если он устарел.

0
ответ дан 14 December 2019 в 13:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: