gpt4 book ai didi

jquery - 将生成的PDF文件存储在服务器上

转载 作者:行者123 更新时间:2023-12-03 22:16:40 25 4
gpt4 key购买 nike

使用 jsPDF 插件,我创建一个 .pdf 文件并根据按钮单击生成下载。我想将文件保存到我的服务器上而不是启动下载。因此,当单击按钮时,我希望将文件保存在:

/tmp/uploads/pdf/example.pdf

我知道我需要使用 Jquery.Ajax 将文件发布到服务器。但是,查看文档,我没有看到任何对 .pdf 作为数据类型的支持。

我的代码:

$(document).on("click", "#PDF", function () {
var table = document.getElementById("result");
var tbl = window.sessionStorage.getItem("tbl");
var cols = [],
data = [];

function html() {
var doc = new jsPDF('p', 'pt');
var res = doc.autoTableHtmlToJson(table, true);
doc.autoTable(res.columns, res.data);
doc.save( tbl+".pdf");
}
html();
});

基于此xml document saving例如我尝试了以下操作:

var pdfDocument = doc.save( tbl+".pdf");
var pdfRequest = $.ajax({
url: "/tmp/uploads/pdf",
processData: false,
data: pdfDocument
});

这会下载文件而不是保存文件。如何保存文件?

最佳答案

如果您的 PDF 包含二进制数据,则尝试通过字符串传输 PDF 时可能会遇到问题。我使用jsPDF的blob输出格式成功了。

var doc = new jsPDF();
// ... generate pdf here ...

// output as blob
var pdf = doc.output('blob');

var data = new FormData();
data.append('data' , pdf);

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (this.readyState == 4) {
if (this.status !== 200) {
// handle error
}
}
}

xhr.open('POST', 'upload.php', true);
xhr.send(data);

然后您的 upload.php 就可以在 PHP 中使用 $_FILES 数组

<?php
if(!empty($_FILES['data'])) {
// PDF is located at $_FILES['data']['tmp_name']
// rename(...) it or send via email etc.
$content = file_get_contents($_FILES['data']['tmp_name']);
} else {
throw new Exception("no data");
}
?>

关于jquery - 将生成的PDF文件存储在服务器上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29826687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com