laravel的新手,我在使用s3访问密钥进行用户身份验证以及将文件夹结构与s3存储桶文件夹集成方面遇到问题

时间:2018-11-07 03:25:19

标签: php laravel amazon-s3 jstree

大家好,我是laravel的新手,我正在创建我的第一个项目,目的是创建一个门户,用户可以在其中编辑,上传和下载文件。所有文件都将在S3中上载。我已经成功创建了上传,删除和下载功能:

{
   public function uploadFile()
   {
       return view('upload');
   }
   public function viewFile()
   {
       $url = 'https://s3.' . env('AWS_DEFAULT_REGION') . '.amazonaws.com/' . env('AWS_BUCKET') . '/';
       $images = [];
       $files = Storage::disk('s3')->files('images');
           foreach ($files as $file) {
               $images[] = [
                   'name' => str_replace('/images', '', $file),
                   'src' => $url . $file
               ];
           }
       return view('viewfile', compact('images'));
   }
   public function store(Request $request)
   {
       $this->validate($request, [
           'image' => 'required|max:10000'
       ]);
       if ($request->hasFile('image')) {
           $file = $request->file('image');
           $name = time() . $file->getClientOriginalName();
           $filePath = 'images/' . $name;
           Storage::disk('s3')->put($filePath, file_get_contents($file));
           
       }
       return back()->withSuccess('Image uploaded successfully');
   }
   public function destroy($image)
   {
       Storage::disk('s3')->delete('images/' . $image);
       return back()->withSuccess('Image was deleted successfully');
   }
}

并在下面使用以下代码:

 public function index()
    {
        $url = 'https://s3.' . env('AWS_DEFAULT_REGION') . '.amazonaws.com/' . env('AWS_BUCKET') . '/';
       $images = [];
       $files = Storage::disk('s3')->files('images');
           foreach ($files as $file) {
               $images[] = [
                   'name' => str_replace('images/', '', $file),
                   'src' => $url . $file
                   
               ];
           }
    //    return view('viewfile');
        return view('home', compact('images'));
    }
}

到目前为止,我已经可以执行上载,删除和dwonload功能,但是现在我遇到了一些文件夹结构问题,以及将用户身份验证与s3访问密钥集成在一起。在其他论坛上我没有读到什么话题,但是由于我是新手我很难与我一起实施同样的事情。在存储桶内,将有多个文件夹可以说市场营销,销售等 所以我的问题是:

1)如何将s3的访问密钥与用户登录名集成在一起,以便在用户登录时,用户将使用用户名和密码以及提供的s3访问密钥登录。

2)当用户登录时,我希望他们能够创建新文件夹和删除文件夹。然后在该文件夹内,他们将能够上传文件。当用户创建新文件夹时,s3中的存储桶也会创建确切的文件夹。如何在laravel中创建此文件夹结构并将其与s3中的存储桶集成?

0 个答案:

没有答案