使用Laravel

时间:2017-10-21 22:33:16

标签: laravel laravel-5 dropzone.js

我使用Dropzone和L5.5,我希望为个人资料存储一个图像,为图库存储多个图像。 我将paramName:置于Dropzone配置中,但我无法上传Dropzone的两个实例,只有一个。

给我一​​个错误:http://127.0.0.1/project/public/dropzone/store 500(内部服务器错误)

我的观点:

<div class="col-md-12">
    <h1>Upload Multiple Images</h1>
    {!! Form::open([ 'route' => [ 'dropzone.store' ], 'files' =>  true, 'enctype' => 'multipart/form-data', 'class' => '', 'id' => '' ]) !!}            
        <div class="dropzone" id="image-upload1">
            <h3>Upload Multiple Image By Click On Box</h3>
        </div>

        {!! Form::text('name'); !!}

        <div class="dropzone" id="image-upload">
            <h3>Upload Multiple Image By Click On Box</h3>
        </div>

       <button type="submit" class="btn btn-success" id="submit-all">OK</button>

   {!! Form::close() !!}
</div>

My Dropzone js:

Dropzone.autoDiscover = false;

//>>> IMAGE 1
var myDropzone1 = new Dropzone("div#image-upload1", { 
    url: "dropzone/store",
    paramName: "profile",
    autoProcessQueue:false,
    uploadMultiple: true,
    maxFilesize:5,
    maxFiles:1,
    acceptedFiles: ".jpeg,.jpg,.png,.gif",
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
    init: function(){
        myDropzone1 = this; // closure
        var btn1 = document.querySelector("#submit-all");
        btn1.addEventListener("click", function(e) {
            e.preventDefault();
            e.stopPropagation();
            //myDropzone1.processQueue(); // Tell Dropzone to process all queued files.
        });
    }
});
// MULTIPLE THE SAME LIKE ONE

$("#submit-all").click( function(e){
    e.preventDefault;
    myDropzone1.processQueue();
    //myDropzone.processQueue();
    //$( "#foo" ).trigger( "click" );
});

在我的控制器上:

public function dropzoneStore(Request $request)
{
    $dir = public_path().'/upload/';

    $files1 = $request->file('profile');

    foreach($files1 as $file1){
        $fileName1 = $file1->getClientOriginalName();
        $file1->move($dir, $fileName1);
    }

    // FOR MULTIPLE
    $files = $request->file('images');
    foreach($files as $file){
        $fileName = $file->getClientOriginalName();
        $file->move($dir, $fileName);
    }
}

2 个答案:

答案 0 :(得分:0)

您需要做的是

  • 如果您通过Ajax进行上传

  • ,请创建2种不同的表单
  • 如果您通过POST上传

  • ,则创建2个不同的输入

过去我遇到过类似的问题,但这是一个值得关注的问题。

目前你在同一个表格上有两个Dropzones,但Dropzone创建了我自己的表格。

另外,检查500错误更好,也许会给你一个关于发生了什么的线索。在Web服务器的日志中查看storage/logs/laravel.log,如果没有任何用处。

答案 1 :(得分:0)

您的评论中的真正错误是:

  

C:\ xampp \ htdocs \ project \ vendor \ laravel \ framework \ src \ Illumin ate \ Routing \ RouteCol lection.php在这一行:throw new MethodNotAllowedHttpException($ others);

MethodNotAllowedHttpException表示您没有为您正在制作的请求设置合适的路线。通常这类似于POST到只有GET路由设置的URL,或redirect() ing - 发出GET - 在成功处理POST到只有POST路由设置的URL之后

另一种常见情况是,如果您在接收POST的方法中进行验证。如果该验证失败,则Laravel will redirect()返回上一页,并发出GET请求。您需要设置GET路由才能工作。

正确设置POST路由(在评论中描述),它必须是其他案例之一。