猿问

在 Laravel 中同时上传多个文件而不重复

我使用此代码在 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


慕姐8265434
浏览 243回答 1
1回答

明月笑刀无情

的精度time()仅为一秒 -在循环中为每个文件time()分配时,没有足够的时间来报告不同的值$name。附加其他内容,例如调用\Illuminate\Support\Str::random()以使每个名称都是唯一的。根据要求,您可能会考虑完全省略文件名中的时间戳,而改用类似的东西md_file()。$name = implode('.', [    md5_file($file->getPathname()),    $file->getClientOriginalExtension()]);这也有助于防止重复文件进入您的存储设备。
随时随地看视频慕课网APP
我要回答