我正在做一个Laravel项目,用户可以上传各种类型的文件,包括图像,文档和视频。我想确保每个上传的文件都有一个唯一的文件名,以避免重复使用同名的现有文件。
我已经使用Laravel的内置Storage facade实现了文件上传功能,但我正在努力为每个上传的文件生成和存储唯一的文件名。我想保持原来的文件扩展名,并确保文件名不太长。
下面是我当前代码的简化版本:
public function uploadFile(Request $request){ $file = $request->file('file ');
if ($file) {
$originalName = $file->getClientOriginalName();
// Need help generating a unique filename here
$uniqueFilename = // ??? How to generate a unique filename with the original extension?
$file->storeAs('uploads', $uniqueFilename, 'public');
}
return response()->json(['message' => 'File uploaded successfully']);
}**
我正在寻找一个解决方案:
- 为每个上载的文件生成唯一的文件名。- 保留原始文件扩展名。- 确保生成的文件名不会过长。- 避免两个用户同时上传同名文件时发生冲突。
任何关于如何在Laravel中实现这一点的建议或代码示例都将非常感谢。谢谢你,谢谢!
1条答案
按热度按时间wnvonmuf1#
我通常使用PHP的
time()
函数来确保生成一个唯一的文件名。你可以使用下面的一些东西。虽然代码未经测试,但我已经在我的项目中使用了它