将 javascript 个生成的 PDF 文件上传到服务器
Upload a javascript generated PDF file to server
请注意,我上传的是运行时生成的文件,而不是用户提交的文件。这就是我的问题所在,拿走那个文件并把它一起发送已经证明是一个真正的挑战。
我正在使用 PDFMake 生成 pdf 文件。我花了很长时间才让这段代码工作,tl;dr 其中我将 pdf 文档信息转换为缓冲区,使用该缓冲区创建一个新的 File 对象,将该文件对象附加到 formdata 对象,并将其发送到我的服务器。
代码如下:
var pdfGen = pdfMake.createPdf(docDef);
pdfGen.getBuffer(function(buffer){
var pdf = new File(buffer, "testpdf.pdf", {type: "application/pdf"});
var data = new FormData();
data.append('upload', pdf);
data.append('content-type', 'application/pdf');
$.ajax({
method: "POST",
url: "/index.cfm?action=admin:service.upload_pdf",
data: data,
processData: false,
contentType: false,
success: function(msg){
console.log(msg);
},
error: function(msg){
console.log(msg);
}
})
})
问题是我在服务器上获得的文件不是有效的 PDF。应用程序类型列为 application/octet-stream。我将文件对象推送到 的函数应该 拒绝除 pdf 之外的所有内容,所以我不确定错误的确切位置。
我已经在这两天了,我很茫然,所以非常感谢任何帮助。
您是否尝试过将生成的 PDF 转换为 Base64,然后将结果发送到您的服务器?
这就是我的意思:
var pdfGen = pdfMake.createPdf(docDef);
pdfGen.getBase64((data) => {
PostToServer(data);
});
请注意,我上传的是运行时生成的文件,而不是用户提交的文件。这就是我的问题所在,拿走那个文件并把它一起发送已经证明是一个真正的挑战。
我正在使用 PDFMake 生成 pdf 文件。我花了很长时间才让这段代码工作,tl;dr 其中我将 pdf 文档信息转换为缓冲区,使用该缓冲区创建一个新的 File 对象,将该文件对象附加到 formdata 对象,并将其发送到我的服务器。
代码如下:
var pdfGen = pdfMake.createPdf(docDef);
pdfGen.getBuffer(function(buffer){
var pdf = new File(buffer, "testpdf.pdf", {type: "application/pdf"});
var data = new FormData();
data.append('upload', pdf);
data.append('content-type', 'application/pdf');
$.ajax({
method: "POST",
url: "/index.cfm?action=admin:service.upload_pdf",
data: data,
processData: false,
contentType: false,
success: function(msg){
console.log(msg);
},
error: function(msg){
console.log(msg);
}
})
})
问题是我在服务器上获得的文件不是有效的 PDF。应用程序类型列为 application/octet-stream。我将文件对象推送到 的函数应该 拒绝除 pdf 之外的所有内容,所以我不确定错误的确切位置。
我已经在这两天了,我很茫然,所以非常感谢任何帮助。
您是否尝试过将生成的 PDF 转换为 Base64,然后将结果发送到您的服务器? 这就是我的意思:
var pdfGen = pdfMake.createPdf(docDef);
pdfGen.getBase64((data) => {
PostToServer(data);
});