Как мне безопасно читать из потока в asp.net? - PullRequest
1 голос
/ 11 ноября 2010
byte[] bytes = new byte[uploader.UploadedFiles[0].InputStream.Length];
uploader.UploadedFiles[0].InputStream.Read(bytes, 0, bytes.Length);

var storedFile = new document();
string strFullPath = uploader.UploadedFiles[0].FileName;
string strFileName = Path.GetFileName(strFullPath);

storedFile.document_id = Guid.NewGuid();
storedFile.content_type = uploader.UploadedFiles[0].ContentType;
storedFile.original_name = strFileName;
storedFile.file_data = bytes;
storedFile.date_created = DateTime.Now;
db.documents.InsertOnSubmit(storedFile);
db.SubmitChanges();

Если:

Чтение из потока за один вызов Read очень опасно.Вы предполагаете, что все данные будут доступны сразу, что не всегда так.Вы должны всегда циклично читать, пока не будет больше данных.

Как мне изменить приведенный выше код, чтобы он стал «менее опасным»?

1 Ответ

4 голосов
/ 11 ноября 2010

У Джона Скита есть действительно хороший пост в блоге о различных способах, которыми люди пытаются читать потоки, и почему каждый из них не работает (он заканчивается тем, что он считает идеальным решением):

Чтение двоичных данных в C #

...