如何在Laravel上传过程中为图像指定唯一的名称?

时间:2018-12-06 05:54:35

标签: php laravel image concatenation laravel-5.5

我正在使用laravel 5.5并上传图像。 我的代码以错误的方式生成名称。

{{1}}

图像的输出名称类似于: heart.png.1544074437

名称应为: heart1544074437.png

7 个答案:

答案 0 :(得分:1)

使用pathinfo函数

尝试此操作

提取文件名..

$fileName = pathinfo($image_icon->getClientOriginalName(), PATHINFO_FILENAME);

提取扩展

$extension = pathinfo($image_icon->getClientOriginalName(), PATHINFO_EXTENSION);

创建新文件名。

$fullFileName = $fileName."-".time().$image_icon->getClientOriginalExtension();

有关更多信息,请参见此question

答案 1 :(得分:0)

使用pathinfo()

  

pathinfo —返回有关文件路径的信息

     

路径   要解析的路径。

     

options如果存在,则指定要返回的特定元素;一   PATHINFO_DIRNAME,PATHINFO_BASENAME,PATHINFO_EXTENSION或   PATHINFO_FILENAME。

     

如果未指定选项,则返回所有可用元素。

$image_icon = $request->file('image_icon')->getClientOriginalName();

$filename = pathinfo($image_icon, PATHINFO_FILENAME);
$extension = pathinfo($image_icon, PATHINFO_EXTENSION);
$data['image'] = $filename.time().'.'.$extension;

答案 2 :(得分:0)

您可以执行以下操作:

$image = explode(".", $image_icon);
$image_name = $image[0];
$image_extension = array_slice($image , -1, 1);

$data['image'] = $image_name.time().'.'.$image_extension[0];

我希望这将对您的问题有帮助且容易解决。 谢谢

答案 3 :(得分:0)

尝试

 $imgName = md5(str_random(30).time().'_'.$request->file('image_icon')).'.'.$request->file('image_icon')->getClientOriginalExtension();

答案 4 :(得分:0)

上面的代码需要做一些小的改进,如下所示:

$image_icon = $request->file('image_icon');

$fileName = pathinfo($image_icon->getClientOriginalName(), PATHINFO_FILENAME);

$extension = pathinfo($image_icon->getClientOriginalName(), PATHINFO_EXTENSION);

$data['image'] = $image_icon->getClientOriginalName().time().'.'.$extension;

我尚未测试此代码段,但应该可以。

答案 5 :(得分:0)

您还可以使用laravel开箱即用的解决方案来上传:

$request->photo->store('images');

有关更多信息,请点击此处:https://laravel.com/docs/5.5/requests#files

答案 6 :(得分:0)

下面的代码对我来说很好。

// extract file name ..

        $fileName = pathinfo($fileupload_dt->getClientOriginalName(), PATHINFO_FILENAME);
        
        // extract extenstion

        $extension = pathinfo($fileupload_dt->getClientOriginalName(), PATHINFO_EXTENSION);
        
        // create new file name.

        $imageName = $fileName."-".time().".".$fileupload_dt->getClientOriginalExtension();

        $uploadPath = 'public/ArchiveImg/img';
        $fileupload_dt->move($uploadPath,$imageName);
        $imageUrl = $uploadPath.$imageName;