【发布时间】:2018-06-06 19:10:38
【问题描述】:
所以我会解释这个问题:
步骤:
1) 客户端(浏览器 javascript)向服务器发送一个 Ajax 请求,该请求会访问一个称为下载的控制器方法。
2) 控制器的方法创建一个 PDF 资源(不保存在文件系统上),并将带有 PDF 二进制流的响应返回给客户端。
3) 客户端接收PDF二进制流并下载到客户端计算机上。这可能吗?
代码: 我已经尝试过的东西 -
客户端:
<script>
(function($) {
var button; // some random DOM button
button.on('click', function(e) {
e.preventDefault();
$.ajax({
url: "/download/:userId"
method: "POST",
dataType: "json"
success: function(response) {
var reader = new FileReader;
var file = new Blob([response.pdf_stream], 'application/pdf');
// create a generic download link
var a = $('<a/>', {
href: file,
download: response.filename
});
// trigger click event on that generic link.
a.get(0).click();
}
});
}
})(jQuery);
</script>
在服务器端:
class Controller
{
public function download($userId)
{
// fetching the user from the database
$user = User::find($userId);
// creating a pdf file using barry pdfdom package
// this will actually parse an HTML view and give us the PDF blob.
$pdf = PDF::loadView('pdf.view')->output();
// using Laravel helper function
return response()->json([
'pdf_stream' => utf8_encode($pdf),
'filename' => 'blahblah.pdf"
]);
// Or if you will in native PHP, just in case you don't use laravel.
echo json_encode([
'pdf_stream' => utf8_encode($pdf),
'filename' => 'blahblah.pdf"
]);
}
}
知道我在这里做错了什么吗?我如何下载该 PDF 文件而不将其保存到系统中(安全和空间问题)。
任何帮助将不胜感激。
伊甸园
【问题讨论】:
标签: javascript php laravel pdf download