【发布时间】:2009-11-16 19:13:53
【问题描述】:
好的,所以我有一个页面,它从 web 服务中获取一个文件作为 Byte[],然后我给用户一个保存/取消对话框来保存该文件。该文件可以是 xml 或 cvs 格式。下载文件时,文件不完整,例如这是文件应具有的内容:
美元,欧元,欧元,1.2,1.1,11/15/2009,15:23:27
美元,澳元,澳大利亚,1.25,1.15,11/15/2009,15:23:27
但是从浏览器保存时它只有::
美元,欧元,欧元,1.2,1.1,11/15/2009,15:23:27
USD,AUD,Australian,1.25,1.
这是我的代码:
Response.Buffer = true;
Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
Response.AddHeader("Content-Length", MyFile.Length.ToString());
FileInfo file = new FileInfo(fileName);
Response.ContentType = Utility.ReturnExtension(file.Extension.ToLower());
Response.BinaryWrite(MyFile);
Response.Flush();
Response.Close();
Response.End();
我已经通过写入文件确保我从 web 服务获取的字节 [] 是正常的
在我的机器上使用以下代码:
StreamWriter writer = null;
string blah = System.Text.ASCIIEncoding.ASCII.GetString(MyFile);
writer = File.CreateText(Server.MapPath(filePath+fileName));
writer.Write(blah);
writer.Close();
writer.Dispose();
如果我删除 Close() 和 End(),则整个文件将使用页面中的一些 HTML 代码呈现。 如果我首先在本地机器上创建/写入文件,然后执行 Response.TransmitFile(file),我会得到完整的文件(仅限 XML 格式)。
我不确定我做错了什么。也许它只是一些非常简单的事情。任何帮助将不胜感激
【问题讨论】:
-
在 Fiddler 中观看您的下载。查看报告了哪些错误消息(如果有)。 RyanD 的答案可能是正确的。