【发布时间】:2017-11-02 17:22:58
【问题描述】:
我在使用 AJAX POST 将 jsPDF 创建的 PDF 文件发送到 .NET API 时遇到了很多问题。现在我可以使用base64,但宁愿不使用,因为它会增加文件大小。 创建 PDF (jsPDF: doc.output) 时,你得到的结果是一个像第一张图片一样的“字符串”,这个文件是正确创建的,所以这不是问题:
下一步是发送数据,为此我使用的是 javascript FormData() 对象:
var data = new FormData();
data.append("json", jsonData);
data.append("pdf", pdfData); //pdfData = doc.output()
还添加了一些 JSON 内容,因为我们还想通过 PDF 文件发送额外的数据。
下一步是AJAX方法:
$.ajax({
url: url,
headers: header,
data: data,
method: 'POST',
contentType: false,
processData: false
}).success(function (data, textStatus, jqXHR) {
console.log("succes");
}).error(function (jqXHR, textStatus, errorThrown) {
console.log("error");
});
现在,当将它发送到服务器时,我查看网络选项卡,发现并非所有数据都已发送:
内容长度只有 1918 长,在下图中您可以看到服务器如何接收它:
JSON 对象的内容字面意思是:[object] [object] 虽然 pdf 文件只是部分发送,但只有前 99 行到达服务器(见下图):
如果有人对这个问题有任何建议,那将是一个巨大的帮助,因为我已经尝试解决这个问题超过一天(如果真的有必要,我将不得不回到 base64)。
谢谢
【问题讨论】:
标签: c# jquery ajax asp.net-web-api jspdf