Php 如何在Laravel中返回下载文件
我需要能够为用户提供一个文件供下载,因此我创建了一个路由(除非我可以在blade中为特定用户的简历创建链接)。我的文件存储在Php 如何在Laravel中返回下载文件,php,laravel,file,laravel-5,Php,Laravel,File,Laravel 5,我需要能够为用户提供一个文件供下载,因此我创建了一个路由(除非我可以在blade中为特定用户的简历创建链接)。我的文件存储在存储/app/cv/目录中。我创建了这样一条路线: Route::get('test', function() { $destinationPath = config('app.CVDestinationPath') . "/static_file.pdf"; $uploaded = Storage::get($destinationPath); r
存储/app/cv/
目录中。我创建了这样一条路线:
Route::get('test', function() {
$destinationPath = config('app.CVDestinationPath') . "/static_file.pdf";
$uploaded = Storage::get($destinationPath);
return $uploaded;
}
然而,这条路线给了我一个奇怪的输出。我认为是文件,但它正在将文件转换为html或其他格式。有没有人能帮我归还文件(可以是pdf、doc、docx或纯文本)。我的文件未存储在公共目录中 您可以使用“响应”来帮助您下载标题:
<?php
use Illuminate\Support\Facades\Response;
Route::get('test', function() {
$destinationPath = config('app.CVDestinationPath') . "/static_file.pdf";
return response()->download($destinationPath);
}
?>
由于文件未上载到公用目录中,因此在返回响应之前,需要先使用存储方法访问该文件
$destinationPath = config('app.CVDestinationPath') . "/static_file.pdf";
$uploaded = Storage::get($destinationPath);
return (new \Illuminate\Http\Response($uploaded))->header('Content-Type', 'application/pdf');
请确保返回带有内容类型的标题,否则文件的格式将不可接受。可能重复@Dekel yea我在发布问题之前尝试过这样做,当时我尝试过这样做。它表示该文件不存在。哪个文件不存在?我正在尝试返回一个静态文件,它存储在myProject\storage\app\cv目录中,它的名称是static\u file.pdf
欢迎使用StackOverflow HolyMarcell,此答案与将此标记为重复的问题完全相同。没有必要这样回答。当你获得足够的声誉时,你将能够将问题标记为重复问题。花点时间,给出一些答案,并获得相关排名:)啊。。。我根本没有看到重复的标记。不过,我的答案比另一条线索中的答案要简洁一些;)@德克尔,我在这里遗漏了一些东西;这根本不是完全重复的。@ChrisForrence就我所知,response()->download
是答案。。。这就是世界上存在的东西dup@Dekel答案解决了评论中的问题;真正的问题是没有启用php\u fileinfo
。