【问题标题】:Undefined variable: image_name Laravel 5.4未定义的变量:image_name Laravel 5.4
【发布时间】:2019-11-20 16:29:05
【问题描述】:

我想上传和显示图片,但我收到错误 未定义变量:image_name

这是我的控制器

$supply = new DataSupplyProcess;
    if($request->hasFile('supply_photo')){
            $photo = Validator::make($request->all(), [
                'supply_photo' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        ]);
    if($photo->fails()){
                return redirect()->back()->with('warning', 'Image size should be 2MB or less');
        }            
        $image = $request->file('supply_photo');
        $image_name = rand().'.'. $image->getClientOriginalExtension();
        $destination_path = public_path('/item');
        $image->move($destination_path, $image_name);
        //dd($image);

    }
        $supply->item = $request->item;
        $supply->supply_details = $request->supply_details;
        $supply->tgl_request_date = $request->tgl_need_date;
        $supply->tgl_need_date = $request->tgl_need_date;
        $supply->employee_id = $id;
        $supply->id_approved_by = $manager->employee_manager_id;
        $supply->is_approved = 0;
        $supply->is_final_approved = 0;
        $supply->supply_photo = $image_name;
        $supply->save();

这是我的观点

  <label for="supply_photo">Photo</label>
        <form action="" method="post" enctype="multipart/form-data">
          <input type="file" class="form-control" name="supply_photo">

【问题讨论】:

  • 如果你没有上传任何文件,$image_name还没有被创建,PHP会报错
  • 但是我上传图片
  • dd($request-&gt;hasFile('supply_photo')) 并发布它返回的内容
  • @MateusJunges 返回错误
  • 现在你知道为什么$image_name 是未定义的了。

标签: php laravel image-upload


【解决方案1】:
$supply = new DataSupplyProcess;

if($request->hasFile('supply_photo')){
        $photo = Validator::make($request->all(), [
            'supply_photo' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        ]);

         if($photo->fails()){
            return redirect()->back()->with('warning', 'Image size should be 2MB or less');
         }  

         //$original_name=$request->file('supply_photo')->getClientOriginalName();
         //$size=$request->file('supply_photo')->getSize();
         $extension=$request->file('supply_photo')->getClientOriginalExtension();
         $filename=uniqid().'.'.$extension;
         $imagepath=url('/item/'.$filename);
         $path=$request->file('supply_photo')->storeAs(public_path('/item'),$filename);



}

【讨论】:

    【解决方案2】:

    当你通过 IF 条件传递这样的变量时,首先分配默认值。 因此,如果未选择图像,您将不会出错。

    在您的原因检查中,您首先获得图像与否

    dd($image = $request->file('supply_photo'));
    
    $image_name = NULL;
    
    if($request->hasFile('supply_photo')){
    
            $image = $request->file('supply_photo');
            $image_name = rand().'.'. $image->getClientOriginalExtension();
            $destination_path = public_path('/item');
            $image->move($destination_path, $image_name);
    
    }
    
    $supply->supply_photo = $image_name;
    $supply->save();
    

    【讨论】:

      【解决方案3】:

      在您的控制器中,尝试以下操作:

      if(Input::file('supply_photo') !== null){
          $photo = Validator::make($request->all(), [
              'supply_photo' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
          ]);
          ...
      }
      

      我认为this post可以提供更多信息

      【讨论】:

      • 您能dd($request-&gt;all()) 并发布回复吗?
      • i dd 并得到 array:6 [▼ "_token" => "RgPVBkj9eyVAijSv1rxnWd77kRX3vG11xr2LAvqa" "item" => "1" "tgl_request_date" => "2019-07-11" "tgl_need_date " => "2019-07-12" "supply_details" => "1" "supply_photo" => "photo_2019-06-25_11-01-55.jpg" ]
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多