微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

使用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
            });

这下载了文件而不是保存它.我该如何保存文件

解决方法

我设法使用FormData()修复此问题,这是我如何做到的:
$(document).on("click",function () {
    var table = document.getElementById("result");
    var cols = [],res.data);
        var pdf =doc.output(); //returns raw body of resulting PDF returned as a string as per the plugin documentation.
        var data = new FormData();
        data.append("data",pdf);
        var xhr = new XMLHttpRequest();
        xhr.open( 'post','upload.PHP',true ); //Post to PHP Script to save to server
        xhr.send(data);

    }
    html();
});

upload.PHP

if(!empty($_POST['data'])){
    $data = $_POST['data'];
    $fname = "test.pdf"; // name the file
    $file = fopen("testa/pdf/" .$fname,'w'); // open the file path
    fwrite($file,$data); //save data
    fclose($file);
} else {
    echo "No Data Sent";
}

关键部分是var pdf = doc.output();您想要获取原始pdf数据的位置.

原文地址:https://www.jb51.cc/jquery/181554.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐