如何以 PDF 格式提供从 laravel Storage::disk('private')->get($file) 返回的数据
How to serve the data returned from laravel Storage::disk('private')->get($file) as PDF
我的问题是关于下面link中的问题:
我需要使用上面示例中提到的相同方法,但我需要提供下载 link PDF 文件或 link 以在浏览器中打开 PDF 文件,而不是图像不能这样做是因为,正如上面示例的评论中提到的 Storage::disk('private')->get($file)
returns 文件的内容不是 URL.
请告诉我如何将行数据(文件内容)转换为文件并为视图内的用户提供 link。
根据 Laravel documentation,您可以简单地在 Storage
外观上使用 download
方法。
从您的控制器,return命令的结果。
return Storage::disk('private')->download($file);
您应该按照以下步骤操作:
我已将 pdf 文件存储到 storage/app/pdf
在控制器中:
public function __construct()
{
$this->middleware('auth');
}
public function index(Request $request, $file)
{
$file = storage_path('app/pdf/') . $file . '.pdf';
if (file_exists($file)) {
$headers = [
'Content-Type' => 'application/pdf'
];
return response()->file($file, $headers);
} else {
abort(404, 'File not found!');
}
}
if laravel 低于 5.2:
在控制器class上方添加use Response;
。
public function index(Request $request, $file)
{
$file = storage_path('app/pdf/') . $file . '.pdf';
return Response::make(file_get_contents($file), 200, [ 'Content-Type' => 'application/pdf',
'Content-Disposition' => 'inline; filename="'.$file.'"'
]);
}
在web.php
Route::get('/preview-pdf/{file}', 'Yourcontroller@index');
在 blade 视图中:
<a href="{{ URL('/preview-pdf/'.$file )}}" target="_blank">PDf</a>
我的问题是关于下面link中的问题:
我需要使用上面示例中提到的相同方法,但我需要提供下载 link PDF 文件或 link 以在浏览器中打开 PDF 文件,而不是图像不能这样做是因为,正如上面示例的评论中提到的 Storage::disk('private')->get($file)
returns 文件的内容不是 URL.
请告诉我如何将行数据(文件内容)转换为文件并为视图内的用户提供 link。
根据 Laravel documentation,您可以简单地在 Storage
外观上使用 download
方法。
从您的控制器,return命令的结果。
return Storage::disk('private')->download($file);
您应该按照以下步骤操作:
我已将 pdf 文件存储到 storage/app/pdf
在控制器中:
public function __construct()
{
$this->middleware('auth');
}
public function index(Request $request, $file)
{
$file = storage_path('app/pdf/') . $file . '.pdf';
if (file_exists($file)) {
$headers = [
'Content-Type' => 'application/pdf'
];
return response()->file($file, $headers);
} else {
abort(404, 'File not found!');
}
}
if laravel 低于 5.2:
在控制器class上方添加use Response;
。
public function index(Request $request, $file)
{
$file = storage_path('app/pdf/') . $file . '.pdf';
return Response::make(file_get_contents($file), 200, [ 'Content-Type' => 'application/pdf',
'Content-Disposition' => 'inline; filename="'.$file.'"'
]);
}
在web.php
Route::get('/preview-pdf/{file}', 'Yourcontroller@index');
在 blade 视图中:
<a href="{{ URL('/preview-pdf/'.$file )}}" target="_blank">PDf</a>