遵循这部分文档:
https://laravel.com/docs/5.3/filesystem#file-uploads
我试图存储文件(图像)并指定自定义文件名,但我不想更改扩展程序。
如果我这样做:
$request->file('avatar')->storeAs('avatars', 'custom_file_name');
该文件将保存为custom_file_name
(没有扩展名),而不是custom_file_name.png
)。
如何在保留原始文件扩展名的同时指定自定义文件名?
答案 0 :(得分:4)
您可以通过以下方式获取上传文件的扩展名:
$extension = $request->photo->extension();
并手动将其应用于存储的文件名。
UploadedFile
类还包含用于访问文件的完全限定路径及其扩展名的方法。extension
方法将尝试根据文件的内容猜测文件的扩展名。
答案 1 :(得分:1)
只是为了支持@ alexey-mezenin回答, 您可能在添加扩展程序
时遇到问题 //get extension
$extension = $request->file('featured_img')->extension();
$request->file('featured_img')->storeAs('/public/album',$post->title.'.'.$extension);
通过它,您可以在/ storage / public / album
中存储完整的代码答案 2 :(得分:0)
下面的代码检查请求是否包含id / name头像的文件,然后使用custom_name存储它。{uploaded_files_extension}
if($request->hasFile('avatar')) {
$imgfile = Input::file('avatar');
$custom_name = 'custom_name'.$imgfile->getClientOriginalExtension();
$request->file('avatar')->storeAs('avatars', $custom_name);
}