上传多张图片时没有保存

时间:2021-07-30 19:56:33

标签: php laravel laravel-5

上传多张图片时出现错误 array to string。这是我的刀片代码:

<form role="form" action="{{ url('admin/product') }}" method="POST" enctype="multipart/form-data"> 
    <input type="file" class="form-control" placeholder="Image Gallery" name="image_gallery[]" required="required" multiple>
</form>

我已经将 multiple 放在输入标签上。

这是控制器代码。注释代码image Gallery是上传图库图片的代码:

public function store(Request $request)
{   
    $this->validate($request, [
        'photo' => 'required|image|mimes:png,jpg,jpeg|max:1000',
        'slug' => 'required',
        'name' => 'required',
        'description' => 'required',
        'stock' => 'required|numeric',
        'price' => 'required|numeric',
        'sale_price' => 'required|numeric',
        'brand_id' =>'integer',
        'manufacture_id' =>'integer',
        'genre_id' => 'integer',
        'gudang_id' => 'integer',
        'weight' => 'integer',
        'status' => 'required',
        'date_arrival' => 'required_if:status,==,"preorder',
        'is_protector' => 'nullable',
        'type' => 'nullable',
        'protector_id' =>'required_if:is_protector,==,"1"',
        'image_gallery' => 'required|image|mimes:png,jpg,jpeg|max:1000',
    ]);
    $formInput = $request->except(['_token']);

    $file = $request->file('photo');
    $filename = $file->getClientOriginalName();
    $request->file('photo')->move('static/dist/img/', $filename);
    $formInput['photo'] = 'static/dist/img/'.$filename;

    //image Gallery
    if ($request->hasFile('image_gallery')) {
        foreach ($request->file('image_gallery') as $file_gallery) {
            $name = $file_gallery->getClientOriginalName();
            $file_gallery->move('static/dist/img/', $name);
            $formInput['image_gallery'] = 'static/dist/img/'.$name;
        }
    }

    if ($request->status == "preorder") {
        $formInput['date_arrival'] = $request->date_arrival;
    }

    $formInput['user_id'] = Auth::user()->id;
    $new_product = Product::create($formInput);
    if ($new_product) {
        Alert::success('', 'Product Berhasil di Tambahkan');

        return redirect('admin/product');
    }
}

1 个答案:

答案 0 :(得分:0)

我不确定您的问题是什么,但您的代码仅节省了 1 个 image_gallery

//image Gallery
if ($request->hasFile('image_gallery')) {
    foreach ($request->file('image_gallery') as $file_gallery) {
        $name = $file_gallery->getClientOriginalName();
        $file_gallery->move('static/dist/img/', $name);
        $formInput['image_gallery'] = 'static/dist/img/'.$name;
    }
}

当您在 $formInput['image_gallery'] = 'static/dist/img/'.$name; 中执行 foreach 时,您只保存了最后一张图片,而不是存储“多个”图片...