2017-10-09 104 views
0

我正在学习一些我下载的laravel代码,并且遇到了一些问题。 这应该是保存,删除和下载文件的功能,但问题是。laravel - 保存和访问上传的文件

的文件被保存在与多家上名为文件夹“存储\程序\公用\项目文件\”(即存储\程序\公用\项目文件\ 11),两者破坏下载方法引用不同的路径,我试图改变,但没有工作,下载显示FileNotFoundException异常破坏从数据库中直接删除而不是从文件夹

那么这段代码错了?它应该如何? 我读过关于使用工匠:链接,但似乎奇怪我运行此命令每次我想上传一个文件,使链接

PS。我cheched的路由,所以这些方法被称为

感谢

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); 
    } 

回答

2

你是存储在存储器中的文件,所以我假设你已经在以下路径

project\storage\app\public\project-files 

如果上传的图片是你可以删除的路径

Storage::delete('public/project-files/1.JPG'); 

for Downlaodi NG文件

$path= storage_path('app/public/project-files/3.JPG'); 
return response()->download($path); 
+0

它的工作,感谢 – Motonio

+0

@ Motonio.glade到这里它帮助you.also更新答案下载文件也 – iCoders

+0

完美两种工作 – Motonio