gpt4 book ai didi

laravel - 在 Laravel 中使用 foreach 上传文件

转载 作者:行者123 更新时间:2023-12-04 15:17:00 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





File uploading in Laravel

(1 个回答)


2年前关闭。




已经解决这个问题2天了,仍然无法弄清楚。我正在尝试将多个文件上传到我的 Laravel 项目中的存储中。我知道我的代码在我用 dd 测试时可以运行到 foreach。

我的 Controller :

$files = $request->file('current_plan_year_claims_data_file_1');
$folder = public_path(). "\storage\\$id";

if (!File::exists($folder)) {
File::makeDirectory($folder, 0775, true, true);
}

if (!empty($files)) {
foreach($files as $file) {
Storage::disk(['driver' => 'local', 'root' => $folder])->put($file->getClientOriginalName(), file_get_contents($file));
}
}

最佳答案

我看到您正在尝试将文件直接存储在 public 中。文件夹,但为什么不使用 Storage Laravel 的 API 和使用公盘?您可以执行以下操作将文件上传到公共(public)目录:

$id = 123;
$files = $request->file();
$folder = $id;
if (count($files) > 0) {
foreach ($files as $file) {
$file->store($folder, ['disk' => 'public']);
}
}

并确保您已将存储路径链接到公共(public):

php artisan storage:link

关注 $files = $request->file();线。当您不向 file() 传递参数时方法,返回所有上传的文件实例。现在,当您将遍历 $files数组,您将可以访问各个上传的文件。

然后您可以使用您的逻辑存储文件,即您可以使用原始名称或其他任何名称。即使您可以使用 Storage处理文件实例的外观。

即,如果您想使用原始名称存储文件,我发现这是一种更简洁的方式,而不是您正在做的事情:

$id = 123;
$files = $request->file();
$folder = $id;
if (count($files) > 0) {
foreach ($files as $file) {
Storage::disk('public')->putFileAs(
$folder,
$file,
$file->getClientOriginalName()
);
}
}

正如@cbaconnier 所建议的,您可以使用 allFiles()方法也更具描述性:

$files = $request->allFiles();

我希望这有帮助。

关于laravel - 在 Laravel 中使用 foreach 上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59323087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com