Laravel在多个字段中保存多个图像

Laravel在多个字段中保存多个图像,laravel,laravel-5,intervention,Laravel,Laravel 5,Intervention,所以我有一个名为“images”的表,其中有数据库中的字段,如“image1”、“image2”等 现在,用户正在单独上传每个图像,因此表单中有8个字段用于上传8个不同的图像,但是如何保存此服务器端?我知道如何上传一张图片,但如何上传多张图片 这是我到目前为止的代码,我得到了以下错误: 未捕获的TypeError:无法读取未定义的属性“gallery” 及 邮政404(未找到) 控制器: public function gallery(Request $request) { if

所以我有一个名为“images”的表,其中有数据库中的字段,如“image1”、“image2”等

现在,用户正在单独上传每个图像,因此表单中有8个字段用于上传8个不同的图像,但是如何保存此服务器端?我知道如何上传一张图片,但如何上传多张图片

这是我到目前为止的代码,我得到了以下错误:

未捕获的TypeError:无法读取未定义的属性“gallery”

邮政404(未找到)

控制器:

    public function gallery(Request $request) {
    if($request->hasFile('gallery'))
    {
        $image = Input::file('gallery');
        $files = count($files);
        $uploadcount = 0;
        foreach($files as $file) {
        $filename = time() . '.' . $image->getClientOriginalExtension();
        $path = public_path('gallery/' . $filename);
        $image_path = ('gallery/' . $filename);
        Image::make($image->getRealPath())->fit(60, 51)->save($path);
        $uploadcount++;
        $file = $request->file('gallery');
        $session = session()->get('key');
        $gallery = new Image();
        $gallery->image1 = $image_path;
        $gallery->business_id = $session;
        $gallery->save();
        return ['url' => url('gallery/' . $filename)];
        }
    }
阿贾克斯:


当然,如果您知道比我更好的方法,请告诉我我愿意接受建议

您尝试过多输入吗
否则我知道一个非常好的插件,它包含了各种各样的事件和方法,你可以欣赏它。它很好,但它没有告诉我如何将多个图像上传到数据库中的多个字段。图像输入字段是强制性的还是可选的?它们是可选的。用户不需要上传图像
function submitGallery() {
    var fd = new FormData($(".upload_gallery")[0]);
    fd.append('img', $('.img'));
    $.ajax({
        url: '/gallery',
        data: fd,
        dataType: 'json',
        async: false,
        type: 'post',
        processData: false,
        contentType: false,
        success: function(data) {
            $(".images").attr("src", data.url);
            $('.messages').append('<div class="alert alert-success">Image Uploaded!<div>');
            $(".alert-success").fadeOut(5000);
        },
        error: function(data) {
            var errors = data.responseJSON; //this will get the errors response data.
            //show them somewhere in the markup
            //e.g
            var errorsHtml = '<div class="alert alert-danger">';
            errorsHtml += errors.gallery[0]; //showing only the first error.
            errorsHtml += '</div>';
            $('.messages').append('<div class="alert alert-danger">File type not supported! Use files with image extension only!<div>'); //appending to a <div id="form-errors">
            $(".alert-danger").fadeOut(5000);
        }
    });
}
 <div id="gallery" class="sortable">
                        <form class="upload_gallery" action="{{ action('BusinessController@gallery') }}" enctype="multipart/form-data" role="form" method="POST">
                        <input type="hidden" name="_token" value="{{ csrf_token() }}">
        <div id="image1" class="image-gallery">
                        <img class="images" src="#" />
                            <input style="width: 100%;height: 100%; opacity: 0;" name="gallery" id="gallery" class="img" data-input="false" type="file"  data-size="sm" data-badge="false" onchange="submitGallery();" />
                        </div>
        <div id="image2" class="image-gallery">
                        <img class="images" src="#" />
                            <input style="width: 100%;height: 100%; opacity: 0;" name="gallery" id="gallery" class="img" data-input="false" type="file"  data-size="sm" data-badge="false" onchange="submitGallery();" />
                        </div>
        <div id="image3" class="image-gallery">
                        <img class="images" src="#" />
                            <input style="width: 100%;height: 100%; opacity: 0;" name="gallery" id="gallery" class="img" data-input="false" type="file"  data-size="sm" data-badge="false" onchange="submitGallery();" />
                        </div>
        <div id="image4" class="image-gallery">
                        <img class="images" src="#" />
                            <input style="width: 100%;height: 100%; opacity: 0;" name="gallery" id="gallery" class="img" data-input="false" type="file"  data-size="sm" data-badge="false" onchange="submitGallery();" />
                        </div>
        <div id="image5" class="image-gallery">
                        <img class="images" src="#" />
                            <input style="width: 100%;height: 100%; opacity: 0;" name="gallery" id="gallery" class="img" data-input="false" type="file"  data-size="sm" data-badge="false" onchange="submitGallery();" />
                        </div>
        <div id="image6" class="image-gallery">
                        <img class="images" src="#" />
                            <input style="width: 100%;height: 100%; opacity: 0;" name="gallery" id="gallery" class="img" data-input="false" type="file"  data-size="sm" data-badge="false" onchange="submitGallery();" />
                        </div>
        <div id="image7" class="image-gallery">
                        <img class="images" src="#" />
                            <input style="width: 100%;height: 100%; opacity: 0;" name="gallery" id="gallery" class="img" data-input="false" type="file"  data-size="sm" data-badge="false" onchange="submitGallery();" />
                        </div>
        <div id="image8" class="image-gallery">
                        <img class="images" src="#" />
                            <input style="width: 100%;height: 100%; opacity: 0;" name="gallery" id="gallery" class="img" data-input="false" type="file"  data-size="sm" data-badge="false" onchange="submitGallery();" />
                        </div>
                    </form>     
    </div>
Route::post('gallery', 'BusinessController@gallery');