2011-12-29 3 views
-1

Мне нужно сгенерировать некоторые файлы в моем веб-приложении asp.net и отправить его клиенту. Итак, я создал метод, который работает с потоком памяти и отправляет буфер в ответ http.Загрузить файл, MemoryStream vs FileInfo

Он отлично работает, но я просто прочитал еще один код, и парень использует fileInfo. Поэтому, если я правильно понимаю, FileInfo является «реальным» файлом, записанным на диске сервера.

Итак, что является лучшим выбором? (если есть) Какие вопросы я должен задать мне? Это размер файла?

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

+0

FileInfo 'помогает в создании объектов FileStream' поэтому .. MemoryStream vs FileStream – Reniuz

ответ

2

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

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

1

Почему бы не использовать класс FileUpload? Если все, что вам нужно, это поток к файлу, вы можете использовать свойство FileUpload.FileContent. Но в будущем, если вы позаботились об этом и хотите его сохранить, это просто FileUpload.SaveAs({path on server}).

Таким образом, вы можете использовать тот же класс/контроль, независимо от ваших потребностей в реализации, или в будущем.

Дополнительная информация о соответствующей MSDN article.

 Смежные вопросы

  • Нет связанных вопросов^_^