我正在研究我下载的一些laravel代码,我遇到了一些问题。 这应该是保存,删除和下载文件的功能,但问题是。
文件正保存在&#34; storage \ app \ public \ project-files \&#34; 的文件夹中(即存储\ app \ public \ project-files \ 11),销毁和下载方法都引用不同的路径,我试图改变但没有工作,< strong>下载显示 FileNotFoundException 和销毁只是从数据库中删除而不是从文件夹中删除
这个代码错了吗?应该怎么样? 我已经读过关于使用工匠的信息:链接,但每次我想上传文件来建立链接时都会运行此命令,这似乎很奇怪
PS。我选择了路线,所以这些方法被称为
由于
public function store(Request $request)
{
if ($request->hasFile('file')) {
$file = new ProjectFile();
$file->user_id = $this->user->id;
$file->project_id = $request->project_id;
$request->file->store('public/project-files/'.$request->project_id);
$file->filename = $request->file->getClientOriginalName();
$file->hashname = $request->file->hashName();
$file->size = $request->file->getSize();
$file->save();
$this->project = Project::find($request->project_id);
return view('project-files');
}
public function destroy($id)
{
$file = ProjectFile::find($id);
File::delete('storage/project-files/'.$file->project_id.'/'.$file->hashname);
ProjectFile::destroy($id);
$this->project = Project::find($file->project_id);
return view('project-files');
}
public function download($id) {
$file = ProjectFile::find($id);
return response()->download('storage/project-files/'.$file->project_id.'/'.$file->hashname);
}
答案 0 :(得分:2)
您正在将文件存储在存储中,因此我假设您已按以下路径上传图像
project\storage\app\public\project-files
如果这是路径,则可以使用
删除 Storage::delete('public/project-files/1.JPG');
用于下载文件
$path= storage_path('app/public/project-files/3.JPG');
return response()->download($path);