pdfjs意外的服务器响应,jsPDF - 发送pdf到服务器最终损坏

我使用JavaScript jsPDF库生成带有文本和图像的pdf。然后,我想将文件发送到服务器以便发送电子邮件。问题是,到达服务器上的文件已损坏,无法打开,或者我看不到PDF上的图像。jsPDF - 发送pdf到服务器最终损坏

我的代码:

var pdf = btoa(doc.output()); - 这给出了一个错误:Uncaught InvalidCharacterError: Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.

var pdf = btoa(encodeURIComponent(doc.output()));

var data = new FormData();

data.append("data" , pdf);

var xhr = new XMLHttpRequest();

xhr.open('post', '/url', true);

xhr.send(data);

我也试着像其他的东西:

var pdf = btoa(encodeURIComponent(doc.output('blob'))); - 文件无法打开

var pdf = btoa(doc.output('blob')); - 文件无法打开

var pdf = btoa(unescape(encodeURIComponent(doc.output()))); - 该文件将打开,但图像是一些灰色线

PS:我使用Laravel 5.服务器代码:

$data = base64_decode($_POST['data']);

$fname = "test.pdf";

$file = fopen("pdf/" .$fname, 'w');

fwrite($file, $data);

fclose($file);

SOLUTION:

JS代码:

var blob = doc.output('blob');

var fd = new FormData();

fd.append('data', blob);

$.ajax({

type: 'POST',

url: '/url',

data: fd,

processData: false,

contentType: false

}).done(function(data) {

console.log(data);

});

服务器代码:

if(!empty($_FILES['data'])){

move_uploaded_file(

$_FILES['data']['tmp_name'],

public_path() . '/test.pdf'

);

return "Pdf was successfully saved.";

} else {

return "No Data Sent";

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值