如何存储没有路径的图像名称 - laravel

时间:2016-09-19 10:35:48

标签: php image laravel eloquent

将图像存储到数据库的正确方法是什么

我应该像images/pagesImages/image.jpg一样存储图像的填充路径,还是正确的方法只存储图像名称并写下图像应该出现的路径?

我是Laravel的新手,当我更新图像时,我正在更新页面上的图像我发现完整路径存储在数据库中

我可以只存储没有路径的图像名吗?

这是我的控制器

public function editAboutImage()
    {
        $id = 1;
        $image = Text_area::find($id);

        $validation = Validator::make(Input::all(), [
            'image' => 'sometimes|image|mimes:jpeg,png|min:1|max:250'
        ]);

        if ($validation->fails()) {
            return Redirect::to('edit-about')->with('errors', $validation->errors());
        }
        if (Input::hasFile('image')) {
            $file = Input::file('image');
            $destination_path = 'images/pagesImages/';
            $filename = str_random(6) . '_' . $file->getClientOriginalName();
            $file->move($destination_path, $filename);
            $image->image = $destination_path . $filename;
            $image->save();
        }
        return Redirect::to('edit-about')->with('message', 'You just updated an image!');
    }

澄清我的两个问题

  1. 这是存储图像的更好方法,如果我用路径或图像名称存储它。
  2. 如果我只需要在没有路径的情况下存储图像名称,我应该如何处理控制器。
  3. 非常感谢

1 个答案:

答案 0 :(得分:3)

  1. 仅存储图片名称。因为,如果要更改路径,则可以轻松获取文件名。如果还将文件更改为新路径。
  2. 您可以使用您的模型来存储文件(我的建议)

    在模型中,创建一个变量和一个函数来存储图像
    对于型号: -

     public static $imagePath = 'images/profile_images';       
    
     public function getImageAttribute($value)       
     {
        if($value != ''){
            return self::getImagePath . '.' . $value;
        }
     }
    
     public function getImagePath()       
     {
            return self::imagePath;
     }       
    

    对于控制器: -

    像往常一样获取文件名,
    在存储

    $file->move($this->getImagePath(), $filename);        
    $image->image = $filename;         
    

    试试这个并说结果