Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Laravel中返回下载文件_Php_Laravel_File_Laravel 5 - Fatal编程技术网

Php 如何在Laravel中返回下载文件

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

我需要能够为用户提供一个文件供下载,因此我创建了一个路由(除非我可以在blade中为特定用户的简历创建链接)。我的文件存储在
存储/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