大家好,我是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中的存储桶集成?