我想用html加载pdf文件,但出现错误。
这是我的功能
public function getDocument($file){
$filePath = 'app/final/attachments/AA-19-4-2019-18123/'.$file;
$type = Storage::mimeType($filePath);
$pdfContent = Storage::get($filePath);
return Response::make($pdfContent, 200, [
'Content-Type' => $type,
'Content-Disposition' => 'inline; filename="'.$file.'"'
]);
}
这是我的路线
Route::get('/documents/pdf-document/{file}', 'inboxController@getDocument');
这是我在刀片中的代码
<embed src="{{ action('inboxController@getDocument', ['file'=> basename($attach)]) }}" style="width:100%;height:auto;overflow: hidden;" frameborder="0" allowfullscreen>
看来,该错误是由于文件名引起的。当我将其更改为asdf.pdf时,它加载了文件,但是当我更改其文件名时,不再加载了。图像没有真正的问题。仅pdf文件。请帮助我
编辑
当我尝试使用此静态代码,然后从路由以及刀片中删除{file}时,将加载pdf。我不知道为什么。
public function getDocument(){
$filePath = 'app/final/attachments/AA-19-4-2019-18123/my.pdf';
$type = Storage::mimeType($filePath);
$pdfContent = Storage::get($filePath);
return Response::make($pdfContent, 200, [
'Content-Type' => $type,
'Content-Disposition' => 'inline; filename="'.$file.'"'
]);
}
答案 0 :(得分:0)
您可以这样:
php artisan storage:link
下一步转到“公用”下的存储文件夹,并创建一个文件夹“ FOLDER_NAME”
您的功能:
public function getDocument($filename){
return response()->file('storage/FOLDER_NAME/'.$filename);
}
在您的路线中,web.php:
Route::get('/pdf/{filename}', ['as' => 'filename', 'uses' => 'ControllerName@getDocument' ]);
然后您可以从刀片中调用它:
<a href="/pdf/{{ 'name_of_your_file' }}" target="_blank">See PDF File:</a>