在Laravel中

时间:2017-02-27 20:08:18

标签: mysql database image laravel file-upload

我需要为头像保存图片。

有人能给我一个简单的代码来保存和检索图像吗?

我需要:

  • 将图像保存在文件夹
  • 在DB
  • 中保存图像名称
  • 最后检索图像标签;我必须通过Query Builder
  • 来完成

形式:

 <form action="" method="post" role="form" multiple>
        {{csrf_field()}}
        <legend>Form Title</legend>

        <div class="form-group">
            <label for="">Your Image</label>
            <input type="file" name="avatar">
        </div>
        <button type="submit" class="btn btn-primary">save</button>
        <a href="{{'/'}}" class="btn btn-primary">back</a>
     </form>
            <img name="youravatar" src="">
        </div>

路线:

Route::get('pic','avatarController@picshow');

Route::post('pic','avatarController@pic');

控制器:

我有avatarController,但它是空的,因为我不知道该怎么做。

数据库:

表名:头像
字段:name id,imgsrc,created_at,Updated_at

其他:

我找到了这段代码,但我找不到任何内容:

 if ($request->hasFile('avatar')) {
      $file = array('avatar' => Input::file('avatar'));
      $destinationPath = '/'; // upload path
      $extension = Input::file('avatar')->getClientOriginalExtension();
      $fileName = rand(11111,99999).'.'.$extension; // renaming image
      Input::file('avatar')->move($destinationPath, $fileName);
  }

2 个答案:

答案 0 :(得分:0)

首先,确保您的表单中有加密属性

<form action="#" method="post" enctype="multipart/form-data">

您可以在控制器中使用与此类似的内容

public function save(Request $request)
{

   $file = $request->file('file');
   // rename your file
   $name = $file->getClientOriginalName();
   \Storage::disk('local')->put($name,  \File::get($file));

   return "file saved";
}

是的,您也应该将文件路由存储在数据库中。

确保为图像使用一致的路径,例如

最后,您必须创建一个路径,以便公开访问您的图像文件,如下所示:

Route::get('images/{file}', function ($file) {

    $public_path = public_path();
    $url = $public_path . '/storage/' . $file;

    // file exists ?
    if (Storage::exists($archivo))
    {
       return response()->file($pathToFile);
    }

    //not found ? 
    abort(404);
});

查看有关Laravel Responses

的文档

我希望这可以让你了解该怎么做。

答案 1 :(得分:0)

在laravel 5.4中上传图片

  1. 检查请求是否有图像
  2. $request->hasFile('image')

    OR

    $request->file('image')->isValid()

    1. 现在保存图片
    2. $request->inputname->store('folder-name') return image path 'folder name/created image name $request->image->store('images')

      1. 检查图像是否退出
      2. Storage::disk('local')->exists('image name');

        1. 删除图片
        2. Storage::delete('image');

          这是我的代码

          if ($request->hasFile('image') && $request->file('image')->isValid())
                      {
                          $path = $request->image->store('images');
                          if(!empty($path)){
                              $edit = Model::FindOrFail($id);
          //                    Delete old image
                              $exists = Storage::disk('local')->exists($edit->image);
                              if($exists){
                                  Storage::delete($edit->image);
                              }
                              $edit->image = $path;
                              $edit->save();
                          }
                      }
          

          Reference