【问题标题】:Upload multiple files at the same time without a duplicate in Laravel在 Laravel 中同时上传多个文件而不重复
【发布时间】:2019-09-12 18:52:59
【问题描述】:

我使用此代码在 Laravel 中一起上传多个文件。但是,所有名称文件都会重复。请指导我。

if (is_array($files) || is_object($files)) {
    foreach ($files as $file) {
        $name = time().'.'.$file->getClientOriginalExtension();
        $file->move(public_path('uploadmusic'), $name);

        PostPhoto::create([
            'post_id' => $post->id,
            'filename' => $name
        ]);
    }
}

1568314601.png
1568314601.png
1568314601.png

【问题讨论】:

  • 描述不够清楚。你到底想做什么?为什么不使用Storage 类来存储文件呢?是否需要文件名以供进一步使用?

标签: php laravel file random


【解决方案1】:

time() 的精度仅为一秒 - 在循环中为每个文件分配 $name 时,没有足够的时间让 time() 报告不同的值。

附加其他内容,例如调用 \Illuminate\Support\Str::random() 以使每个名称都是唯一的。

根据要求,您可以考虑完全省略文件名中的时间戳,而改用 md_file() 之类的名称。

$name = implode('.', [
    md5_file($file->getPathname()),
    $file->getClientOriginalExtension()
]);

这也有助于防止重复文件进入您的存储设备。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 2015-12-04
    • 2013-08-14
    • 1970-01-01
    • 2015-01-30
    • 2019-09-30
    • 1970-01-01
    相关资源
    最近更新 更多