【问题标题】:Multiple Image Upload in Laravel 5.2Laravel 5.2 中的多张图片上传
【发布时间】:2016-08-18 08:37:14
【问题描述】:

我终于可以上传和移动图片了,但现在我想在 Laravel 上创建多个上传图片。那可能吗?我必须使用数组来制作它吗?

我可以稍微修改一下这段代码吗?

它在我的 ProductController.php 中

$picture = '';

if ($request->hasFile('images')) {
    $file = $request->file('images');
    $filename = $file->getClientOriginalName();
    $extension = $file->getClientOriginalExtension();
    $picture = date('His').$filename;
    $destinationPath = base_path() . '\public\images/';
    $request->file('images')->move($destinationPath, $picture);
}

if (!empty($product['images'])) {
    $product['images'] = $picture;
} else {
    unset($product['images']);
}

谢谢。 注意:我上面的代码来自stackoverflow上的一个好心人,再次感谢;)

【问题讨论】:

    标签: php forms laravel image-uploading laravel-5.2


    【解决方案1】:

    在您的前端表单中,您必须使用您的字段属性名称,例如

    name="images[]"
    

    你的控制器代码会是这样的。

    $picture = '';
    if ($request->hasFile('images')) {
        $files = $request->file('images');
        foreach($files as $file){
            $filename = $file->getClientOriginalName();
            $extension = $file->getClientOriginalExtension();
            $picture = date('His').$filename;
            $destinationPath = base_path() . '\public\images';
            $file->move($destinationPath, $picture);
        }
    }
    
    if (!empty($product['images'])) {
        $product['images'] = $picture;
    } else {
        unset($product['images']);
    }
    

    【讨论】:

    • 如果我需要在数据库的不同字段中上传不同的图像怎么办?表示字段名称不同,其中<input> 名称也不同,比方说!
    • 可以通过以下方式改进:$destinationPath = public_path('images');
    【解决方案2】:

    您来自 $_POST 的输入将作为数组传入。您需要做的就是遍历它:

    $picture = '';
    
    if ($request->hasFile('images')) {
        $files = $request->file('images');
        foreach($files as $file){
            $filename = $file->getClientOriginalName();
            $extension = $file->getClientOriginalExtension();
            $picture = date('His').$filename;
            $destinationPath = base_path() . '\public\images/';
            $request->file('images')->move($destinationPath, $picture);
        }
    }
    

    【讨论】:

    • 关于表单,我必须使用name="images[]" 还是像name="images1"name="images2"name="images3"
    • 我的数据库中好像已经记录了图片的临时名称,但是移动失败了。
    【解决方案3】:

    稍微修改代码即可上传多张图片。

     public function store(Request $request)
     {
             $pid = $request->input('pid');
             $input = $request->file('images');
    
             $picture = array();
             if($request->hasFile('images')) :
                foreach ($input as $item):
                  $extension = $item->getClientOriginalName();
                  $name = date('Ymd') . '.' . $extension;
                  $destinationPath = base_path() . '/uploads/images/';
                  $item->move($destinationPath, $name);
                  $arr[] = $name;
                endforeach;
                $picture = implode(",", $arr);
             else:
                $picture = '';
             endif;
    
             DB::table('document')->insert(array('pid' => $pid,'image' => $picture)); 
             Session::flash('message', 'Multiple pictures are uploaded successfully');
             return redirect('/image-upload');
     }
    

    【讨论】:

      猜你喜欢
      • 2021-12-22
      • 1970-01-01
      • 2019-09-05
      • 2018-04-28
      • 2020-03-23
      • 1970-01-01
      • 2020-12-12
      • 2017-07-27
      • 2019-12-25
      相关资源
      最近更新 更多