2012-08-02 22 views
1

我正在使用EPPlus库来创建一个.xlsx文件,然后我将其传输到浏览器。要流式传输我正在使用的代码:.xlsx在流式传输事件后的文件腐蚀

HttpContext.Current.Response.Clear(); 
      HttpContext.Current.Response.Buffer = true; 
      HttpContext.Current.Response.ContentType = "application/octet-stream"; 
      HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.MapPath("xls/"+ download_results_filename)); 
      HttpContext.Current.Response.TransmitFile(Server.MapPath("xls/" + download_results_filename)); 
      HttpContext.Current.Response.Flush(); 

我的问题是这样的。如果我和库一起使用我的代码,保存并打开文档一切都很好。但是,当我在服务器上创建文件并将其传输给用户时,使用上面的代码,我得到一个损坏的文件消息,并具有纠正或恢复文件的额外功能,这是我所做的,并且文件显示正确;所以如果使用上面的八位字节流方法将文件流式传输给用户会破坏文件,那么我应该如何将二进制数据流式传输给用户。我想将内容类型保留为'application/octet-stream',就好像我具体说明它是在iPad上遇到问题的Excel电子表格一样。

谢谢

+0

为什么你使用的路径从服务器名是发送到客户端? (在Content-Disposition标题中) – 2012-08-02 01:25:11

+0

否则它无法找到该文件。 – flavour404 2012-08-02 01:26:53

+0

对于TransmitFile而言是正确的,但对于Content-Disposition标题不正确,这里定义的文件名只是客户端(浏览器)用于默认文件名的东西,但我不确定这是否是文件损坏的原因 – 2012-08-02 01:29:30

回答