经过大量的调试,我能够找到有关文件大小之间的大小差异。
实际上,我正在尝试发送.docx
文件到客户端,这里是我的C#
块代码,看起来像
FileInfo file = new FileInfo(documentFilePath);
byte[] fileConent = File.ReadAllBytes(documentFilePath);
Console.WriteLine("Byte Length :" + fileConent.Length);
context.Response.Clear();
context.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", file.Name));
context.Response.AddHeader("Content-Length", file.Length.ToString());
context.Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
context.Response.BinaryWrite(fileConent);
context.Response.End();
上述代码的输出给出了文档文件大小如下
Byte Length :4338
下面是下载.docx
文件的客户端代码,如下所示
$.ajax({
type: "POST",
url: '/exportDataForDocument,
data: JSON.stringify(result),
responseType: 'arraybuffer',
success: function(data, textStatus, xhr) {
var fileName = "sample.docx";
var blob = new Blob([data], { type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document" });
console.log("Byte length of the Blob: " + blob.size + " bytes");
//Check the Browser type and download the File.
var isIE = false || !!document.documentMode;
if(isIE) {
window.navigator.msSaveBlob(blob, fileName);
} else {
var url = window.URL || window.webkitURL;
link = url.createObjectURL(blob);
var a_down = $("<a />");
a_down.attr("download", fileName);
a_down.attr("href", link);
$("body").append(a_down);
a_down[0].click();
a_down.remove();
}
}
},
上面的JS
块给出了下载文档文件的字节大小
Byte length of the Blob: 7045 bytes
由于服务器上的文档大小和客户端收到的文档大小之间的大小差异,我没有得到相同的文档,而是从服务器接收损坏的文档。
不知道,为什么文件大小在客户端改变?
1条答案
按热度按时间dxxyhpgq1#
经过一番努力,我终于能够解决这个问题,并从服务器下载
.docx
文件。对服务器代码做了一些修改,如下所示:
并对前端代码做了一些修改,如下所示:
最后,我能够从服务器下载一个正确的和正确的相同大小的
.docx
文件。