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

Custom file name while keeping extension

关注这部分文档:

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

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

如果我这样做:

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

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

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

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

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

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

The UploadedFile class also contains methods for accessing the file's fully-qualified path and its extension. The extension method will attempt to guess the file's extension based on its contents.

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

下面的代码检查请求是否有 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);
            }

只是为了支持@alexey-mezenin的回答, 您可能在添加扩展程序时遇到问题

  //get extension
  $extension = $request->file('featured_img')->extension();

 $request->file('featured_img')->storeAs('/public/album',$post->title.'.'.$extension);

有了它,您可以将完整的代码存储在您的 /storage/public/album