如何使用 Laravel 强制下载 png 文件?
Posted
技术标签:
【中文标题】如何使用 Laravel 强制下载 png 文件?【英文标题】:How to force png file download with Laravel? 【发布时间】:2021-11-13 08:22:28 【问题描述】:我已经尝试过使用以下代码。但下载文件已损坏,显示 “我们不支持这种文件格式!”
$fileName = $request->fileName;
// $file_url = public_path() . "/uploads/$fileName";
$file_url = "https://helloworld.net". "/uploads/$fileName";
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"" .
basename($file_url) . "\"");
readfile($file_url);
【问题讨论】:
为什么不使用文件路径而不是文件url? 【参考方案1】:你可以像下面这样使用,它总是有效的
public function download($request)
$fileName = $request->fileName;
$file_url = "https://helloworld.net". "/uploads/$fileName";
if (file_exists($file_url))
$headers = [
'Content-Type' => 'application/pdf',
];
return response()->download($file_url, "$fileName", $headers);
else
session()->flash('message','Image does not exist');
return back();
【讨论】:
抱歉,文件已损坏! @Prerana,我下载了图片,上面的代码在我的所有项目中【参考方案2】:既然你在使用 laravel,为什么不使用它的工具
public function download($request)
$fileName = $request->fileName;
$filePath = public_path("/uploads/$fileName");
if (file_exists($filePath))
return response()->download($filePath);
【讨论】:
它有效。但同样的问题文件以某种方式损坏。显示“我们不支持这种文件格式!” @Prerana 你试图用什么打开它,在你的浏览器中打开它(拖放) 是的,已经尝试过了。不工作以上是关于如何使用 Laravel 强制下载 png 文件?的主要内容,如果未能解决你的问题,请参考以下文章
Laravel - 在存储中显示 PDF 文件而不强制下载?
Laravel - 在存储中显示 PDF 文件而不强制下载?