Я должен инициировать пользовательские загрузки больших файлов к webbrowser, где я создаю файл для передачи на сервере, затем удалите его сразу впоследствии. Я нашел, что достаточно примеров видит, что я должен, вероятно, использовать Ответ. TransmitFile или Ответ. WriteFile..., но услышали, что существуют проблемы с обоими:
WriteFile синхронен, но он буферизует файл в памяти прежде, чем отправить его пользователю. Так как я имею дело с очень большими файлами, это могло вызвать проблемы.
TransmitFile не буферизует локально, таким образом, он действительно работает на большие файлы, но это является асинхронным, таким образом, я не могу удалить файл после вызова TransmitFile. По-видимому, сбрасывание файла не гарантирует, что я могу удалить его также?
Каков лучший способ иметь дело с этим?
Существует BinaryWrite, также... действительно ли я мог циклично выполниться через поток файла, копируя его в сегментах?
Вот хорошее решение, которое использует TransmitFile, но позволяет вам что-то делать после того, как это будет сделано с помощью делегата:
http: / /improve.dk/blog/2008/03/29/response-transmitfile-close-will-kill-your-application
Просто замените ведение журнала в конце на удаление файла.
Можно ли записать файл на диск (случайное имя и т.д.) и начать отправку, но добавить запись в таблицу БД с именем Временного файла, по истечении определенного вами Периода времени, провести некоторую очистку этих записей БД, и удалить файл с диска, если он устарел.