Laravel:将存储/应用程序中安全存储的文件的URL提供给jquery库
I have stored my PDF files using the storage API. To let the browser read PDF I could use the Response::make() but I am using the pdfObject jquery library to display it embedded. And the problem is while using the library, I have to provide the url of pdf:
var pdf = new PDFObject({
url: **"THE URL TO THE PDF",**
pdfOpenParams: {
navpanes: 0,
toolbar: 0,
statusbar: 0,
view: "FitV"
}
How can I give the URL of the securely stored PDF to the library? Any help appreciated!
我使用存储API存储了我的PDF文件。 为了让浏览器读取PDF,我可以使用Response :: make(),但我使用pdfObject jquery库来嵌入它。 问题是在使用库时,我必须提供pdf的URL: p>
var pdf = new PDFObject({
url:**“THE URL to THE PDF“,**
pdfOpenParams:{
navpanes:0,
toolbar:0,
状态栏:0,
视图:”FitV“
}
code> pre>
如何将安全存储的PDF的URL提供给库?
非常感谢! p>
div>
You can make a new "loader" controller, from which you can return a pdf header with the desired file. Then instead of calling the file directly, pass its encrypted name as a parameter to the controller and decode it inside:
var pdf = new PDFObject({
url: "site.com/controller/method/<?php Crypt::encrypt('filename.pdf') ?>",
//...
}
Controller:
Route::get('/controller/method/{filename}', function($filename) {
// Laravel is ignoring the header method and is sending a plain html/txt :(
// So a normal php header can do the workaround
header("Content-type: application/pdf");
$filename = '/url/to/pdf/' . Crypt::decrypt($filename);
$response = Response::make(readfile($filename), 200);
$response->header('Content-Type', 'application/pdf');
return $response;
});
P.S. The Laravel code is not tested and will mostly likely not work (I am little rusty with it), I tested with pure PHP though, and it worked.