Laravel 5 下载文件不起作用

Laravel 5 下载文件不起作用,laravel-5,laravel-5.2,laravel-5.3,Laravel 5,Laravel 5.2,Laravel 5.3,我正在尝试创建下载文件功能,但它不起作用,它给我一个错误: “文件“/storage/app/candidates/cvs/3/1493594353.pdf”不存在,但我只是在查看文件,文件就在那里 我错过什么了吗 注:我使用的是laravel 5.4 文件结构: storage - app -- candidates ---cvs ----3 -----1493594353.pdf - public 路线: Route::post('candidate/cv/download-cv/','C

我正在尝试创建下载文件功能,但它不起作用,它给我一个错误: “文件“/storage/app/candidates/cvs/3/1493594353.pdf”不存在,但我只是在查看文件,文件就在那里

我错过什么了吗

注:我使用的是laravel 5.4

文件结构:

storage
- app
-- candidates
---cvs
----3
-----1493594353.pdf
- public
路线:

Route::post('candidate/cv/download-cv/','CurriculumVitaeController@downloadCV');
控制器:

public function downloadCV()
    {

        $candidate = Candidate::where('user_id',Auth::user()->id)->first();
        $candidateCv = CandidateCv::where('candidate_id',$candidate->id)->first();


        $path = Storage::url('app/candidates/cvs/'.$candidate->id.'/'.$candidateCv->cv);
        $headers = ['Content-Type: application/pdf'];
        $newName = 'cv-'.time().'.pdf';

        return response()->download($path, $newName, $headers);

    }

将控制器下载方法更改为:

public function downloadCV()
{

    $candidate = Candidate::where('user_id',Auth::user()->id)->first();
    $candidateCv = CandidateCv::where('candidate_id',$candidate->id)->first();


    $path = storage_path().'/app/candidates/cvs/'.$candidate->id.'/'.$candidateCv->cv;
    $headers = ['Content-Type: application/pdf'];
    $newName = 'cv-'.time().'.pdf';

    return response()->download($path, $newName, $headers);
}
此外,为了使事情更加动态,您可以动态分配
内容类型
和返回的文件扩展名,如下所示:

public function downloadCV()
{

    $candidate = Candidate::where('user_id',Auth::user()->id)->first();
    $candidateCv = CandidateCv::where('candidate_id',$candidate->id)->first();


    $path = storage_path().'/app/candidates/cvs/'.$candidate->id.'/'.$candidateCv->cv;
    $headers = ['Content-Type: '.Storage::mimeType('/app/candidates/cvs/'.$candidate->id.'/'.$candidateCv->cv)];
    $newName = 'cv-'.time().'.'.pathinfo($path, PATHINFO_EXTENSION);

    return response()->download($path, $newName, $headers);
}

谢谢crabbly,还有一个关于内容类型的问题,文件可以是pdf、doc或txt,如何根据使用的文件类型更改内容类型标题?