laravel - 保存并访问上传的文件

时间:2017-10-09 09:19:42

标签: php laravel file-upload

我正在研究我下载的一些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);
    }

1 个答案:

答案 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);