我使用此代碼在 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.png1568314601.png1568314601.png
1 回答

明月笑刀無情
TA貢獻1828條經驗 獲得超4個贊
的精度time()僅為一秒 -在循環中為每個文件time()分配時,沒有足夠的時間來報告不同的值$name。
附加其他內容,例如調用\Illuminate\Support\Str::random()以使每個名稱都是唯一的。
根據要求,您可能會考慮完全省略文件名中的時間戳,而改用類似的東西md_file()。
$name = implode('.', [
md5_file($file->getPathname()),
$file->getClientOriginalExtension()
]);
這也有助于防止重復文件進入您的存儲設備。
- 1 回答
- 0 關注
- 201 瀏覽
添加回答
舉報
0/150
提交
取消