Laravel将图像上载到img文件夹

Laravel将图像上载到img文件夹,laravel,laravel-5,Laravel,Laravel 5,使用form class将一张或多张图像上传到我的存储器中的最佳方式是什么 刀片: <form class="" action="{{route('newproduct')}}" method="post"> <div class="form-group"> <div class="form-group"> <label for="myimage"> <img src="/img/{{$user->

使用
form class
将一张或多张图像上传到我的存储器中的最佳方式是什么

刀片:

<form class="" action="{{route('newproduct')}}" method="post">
<div class="form-group">
        <div class="form-group">
          <label for="myimage">  <img src="/img/{{$user->myimage}}" height="80" width="80"></label>
          <input type="file" id="myimage" name="myimage"></font>

        </div>

      </div>
在我的控制器中,它只将随机生成的名称保存在数据库中,但不将文件上载到我的服务器。我想使用此路径保存路径:

/public/img/
更新的代码没有图像路径:

    public function NewProduct (Request $request)
      if($request->hasFile('myimage')){
    if ($request->file('myimage')->isValid()) {
      $user = Auth::user();
      $image_name = date('mdYHis') . uniqid() . $request->file('myimage')->getClientOriginalName();
      $user->save();
      return redirect()->back();
    }

}
谢谢

首先,将
enctype=“multipart/form data”
添加到

然后,在控制器中添加以下内容:

public function NewProduct(Request $request){
    if($request->hasFile('myimage')){
        if ($request->file('myimage')->isValid()) {
            $user = Auth::user();
            $image_name = date('mdYHis') . uniqid() . $request->file('myimage')->getClientOriginalName();
            $path = base_path() . '/public/img';
            $request->file('myimage')->move($path,$image_name);
            $user->myimage = $path.$image_name;
            $user->save();
            return redirect()->back();
        }
        return redirect()->back()->with('error', 'image not valid');
    }
    return redirect()->back()->with('error', 'no image');
}
对于多个图像,只需迭代myimage数组:

public function NewProduct(Request $request){
    if($request->hasFile('myimage')){
        // Do a loop over all images
        foreach ($request->file('myimage') as $image) {
            if ($image->isValid()) {
                $user = Auth::user();
                $image_name = date('mdYHis') . uniqid() . $image->getClientOriginalName();
                $path = base_path() . '/public/img';
                $image->move($path,$image_name);
                $user->myimage = $path.$image_name;
                $user->save();
                return redirect()->back();
            }
        }
        // end loop
    }
    return redirect()->back()->with('error', 'no image');
}
这种方法的一个问题是,用户将使用最后一个图像来存储它(所有图像都将上载,但用户图像路径将是最后一个)

可以通过创建一个表来存储用户图像路径并将图像保存在其中(一对多关系)

Blade:

<form  action="{{route('newproduct')}}" method="post" enctype="multipart/form-data">
     <div class="form-group">
        <div class="form-group">
          <label for="myimage">  
          <input type="file" id="myimage" name="myimage"></font>
        </div>
      </div>
</form>

需要添加到表单
enctype=“multipart/form data”
,但我的控制器中还需要一个代码?检查并尝试我的应答解析错误:语法错误,意外的“if”(T_if),应为“;”或者“{”if语句前面有一行没有添加
,但是:解析错误:语法错误,意外的'if'(T_-if),期望函数(T_-function)您将代码放在哪里?让我更新它并设置一个函数…效果很好:)但是它将图像另存为:“/var/www/html/myproject/public/IMG012320180734575A66D791781E1BTICON.png”其中img在图片名称前没有“/”。为什么路径很长而不是“/img/imagename.png”?
<form  action="{{route('newproduct')}}" method="post" enctype="multipart/form-data">
     <div class="form-group">
        <div class="form-group">
          <label for="myimage">  
          <input type="file" id="myimage" name="myimage"></font>
        </div>
      </div>
</form>
use Illuminate\Support\Facades\Storage;

  public function NewProduct(Request $request){

        // if request has file
        if($request->hasFile('myimage')){

            $filenameWithExt=$request->file('myimage')->getClientOriginalName();

            $filename=pathinfo($filenameWithExt,PATHINFO_FILENAME);

            $extension=$request->file('myimage')->getClientOriginalExtension();

            $fileNameToStore= date('mdYHis') . uniqid() .$filename.'.'.$extension;

            request()->myimage->move(public_path('img'), $fileNameToStore);  

     }else{
           // if no file from request , then put one no-image.jpeg in public/img folder
           $fileNameToStore='no-image.jpeg'
      }

  $user = Auth::user();
  $user->myimage=$fileNameToStore;
  $user->save();
  return redirect()->back();
  }