2013-02-18 24 views
0

我现在用的是C#HttpPostedFileBase使用这段代码保存字节数组我的SQL Server数据库:当我阅读文件贮藏inputSteam数据库和阅读他们造成损坏的文件

private byte[] GetByteArrayFromFile(HttpPostedFileBase file) 
{ 
    using (var b = new BinaryReader(file.InputStream)) 
    return b.ReadBytes(file.ContentLength); 
} 

我得到一个损坏的例外与应用程序,我打开它像PDF文件,Excel文件。它似乎只适用于txt文件。

这里是我用于检索文件的代码:

_response = context.HttpContext.Response; 
_response.ContentType = GetMimeType(Path.GetExtension(_fileDownloadName)); 
_response.AddHeader("Content-Disposition", "attachment; filename=" + _fileDownloadName); 
_response.OutputStream.Write(_buffer, 0, _buffer.Length); 
_response.Flush(); 
_stream.Close(); 
_response.Flush(); 
_response.End(); 
+0

在写入文件之前是否有任何内容正在写入输出流?如果输出缓冲被启用,你可以尝试_response.Clear()在写入流之前 – 2013-02-18 09:15:29

+0

我设置HttpContext.Current.Response.BufferOutput = false,并且在写入流之前我做了_response.Clear(),没有运气。 – segFault 2013-02-18 16:23:35

+0

不,您希望缓冲区为true,否则它会在清除输出之前刷新输出。 – 2013-02-18 22:33:23

回答