保留扩展名时自定义文件名

时间:2017-05-14 17:30:48

标签: laravel laravel-5 laravel-5.3

遵循这部分文档:

https://laravel.com/docs/5.3/filesystem#file-uploads

我试图存储文件(图像)并指定自定义文件名,但我不想更改扩展程序。

如果我这样做:

$request->file('avatar')->storeAs('avatars', 'custom_file_name');

该文件将保存为custom_file_name(没有扩展名),而不是custom_file_name.png)。

如何在保留原始文件扩展名的同时指定自定义文件名?

3 个答案:

答案 0 :(得分:4)

您可以通过以下方式获取上传文件的扩展名:

$extension = $request->photo->extension();

并手动将其应用于存储的文件名。

  

UploadedFile类还包含用于访问文件的完全限定路径及其扩展名的方法。 extension方法将尝试根据文件的内容猜测文件的扩展名。

https://laravel.com/docs/5.4/requests#files

答案 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);
            }