【问题标题】:Laravel download imageLaravel 下载图片
【发布时间】:2021-09-11 03:40:03
【问题描述】:

我有一个添加图像的功能,在数据库中添加成功后,我们有一个类似 public/images/asd.png 的路径。问题是如何确保在添加到图片名称时添加了一个 ID,并且我们有诸如 public/images/asd1.png、public/images/asd2.png 之类的东西。

模型中的函数

public function getOriginImageUrl()
    {
        return $this->attributes['image'];
    }

    public function getImageAttribute($value)
    {
        return Storage::exists($value) ? Storage::url($value) : null;
    }

控制器中的功能

 if ($request->hasFile('image')) {
            $file = $request->file('image');
            $blog->image = $file->storeAs('public/images', $file->getClientOriginalName());
        }

【问题讨论】:

    标签: laravel image download


    【解决方案1】:

    您可以将 time() 与图像名称结合起来,而不是 id。

    if ($request->hasFile('image')) {
           $file = $request->file('image');
           $namewithextension = $file->getClientOriginalName(); //Name with extension 'filename.jpg'
           $name = explode('.', $namewithextension)[0]; // Filename 'filename'
           $extension = $file->getClientOriginalExtension(); //Extension 'jpg'
           $uploadname = $name. '-' .time() . '.' . $extension;
           $blog->image = $file->storeAs('public/images', $uploadname);
     }
    

    【讨论】:

    • 这是一个不错的选择,谢谢)事实上,主要任务是不要有同名的图片,因为当你删除时,所有同名的图片都会被删除。让我们看看他们是否可以提供其他东西)
    • 这样你可以保持文件的原始名称以及名称将是唯一的。在显示文件时,您只能向用户显示文件原始名称(跳过时间)。如果对您有帮助,也不要忘记为答案投票。
    • 是的,当然)我只是有点名声,我的投票没有显示,但会被记录
    猜你喜欢
    • 2021-01-29
    • 2022-01-26
    • 2019-01-31
    • 2016-02-25
    • 2010-11-23
    • 2012-12-31
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多