2010-11-11 2 views
1
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(); 

Если:Как безопасно читать из потока в asp.net?

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

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

ответ

4

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

Reading binary data in C#

+0

Сладкий - он является автором книги «Чтение из потока в одном обращении к чтению очень опасно. Вы предполагаете, что все данные будут доступны сразу, что не всегда так. Вы должны всегда крутиться, читая, пока не будет больше данных. в этих вопросах. Благодаря! – FiveTools

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