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编辑器中的图像 Hex编辑器

这是一个艰难的。

在评论的讨论中,我们发现目标文件比源文件大。 Excel仍然可以打开它,但发出警告。 这闻起来像是部分腐败。

结果File.OpenWrite 附加到一个现有的文件。 在testing期间,您一遍又一遍地附加了相同的文件。

debugging这个的关键是二进制比较文件。 当你遇到一个bug,不知道它是什么:调查! 实验。 获取新的信息。 改变设置。