下载文件不起作用
Download File doesnt work
我正在尝试创建下载文件功能,但它不起作用,它给我一个错误:
"The file "/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);
}
此外,为了使事情更加动态,您可以即时分配 Content-type
和返回的文件扩展名,如下所示:
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);
}
我正在尝试创建下载文件功能,但它不起作用,它给我一个错误: "The file "/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);
}
此外,为了使事情更加动态,您可以即时分配 Content-type
和返回的文件扩展名,如下所示:
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);
}