CopyTo使用xlsx文件打开时出错
我有以下IHttpHandler(ashx)处理程序:
public class UploadFile : IHttpHandler { public void ProcessRequest(HttpContext context) { using (var fileStream = File.OpenWrite(@"C:\" + context.Request.QueryString["FileName"])) { context.Request.InputStream.CopyTo(fileStream); } } public bool IsReusable { get { return false; } } }
这是从以下方面调用:
$.ajax({ type: "POST", url: "UploadFile.ashx?FileName=" + file.name, data: file, success: function () { alert("Success"); }, processData: false, contentType: file.type });
文件variables来自<input type="file" />
并使用document.getElementById("fuExcelFile").files[0]
检索。
这似乎与除了xlsx以外的每个文件一起工作。 使用xlsx,文件被上传,但是当我在Excel中打开它时,出现以下错误:
我们发现“.xlsx”中的某些内容存在问题。 你想让我们尽可能地恢复吗? 如果您信任此工作簿的来源,请单击是
我不知道该从哪里开始,因为它可以与其他文件一起工作:S
编辑: 这是im文件testing与hex编辑器中的图像
这是一个艰难的。
在评论的讨论中,我们发现目标文件比源文件大。 Excel仍然可以打开它,但发出警告。 这闻起来像是部分腐败。
结果File.OpenWrite
附加到一个现有的文件。 在testing期间,您一遍又一遍地附加了相同的文件。
debugging这个的关键是二进制比较文件。 当你遇到一个bug,不知道它是什么:调查! 实验。 获取新的信息。 改变设置。