Laravel 5 - DropzoneJS:请求对象为空

时间:2015-07-17 00:36:49

标签: laravel laravel-5 dropzone.js

我决定将一个网站从Laravel 4.3升级到Laravel 5.1,我面临一个奇怪的问题。

我尝试使用DropzoneJS库上传一些图片。我告诉这个库:"在将图片发送到/pictures/store之前(使用Ajax POST方法),将album_id参数添加到请求"。

此部分正常运行,但在我的PictureController中,store操作正在使Request对象保持为空,而不是包含所有输入和许多其他内容。

查看:

{!! Form::open(['url' => '/pictures/store', 'class' => 'dropzone', 'id' => 'myAwesomeDropzone']) !!}
    {!! Form::hidden('album_id', $album->id) !!} // Gives a correct value here
{!! Form::close() !!}

JS:

var token = $('meta[name="csrf-token"]').attr('content');

Dropzone.options.myAwesomeDropzone = {
    paramName : 'file',
    maxFilesize : 8, // Mo
    acceptedFiles : 'image/*',
    headers : {
        'X-CSRF-TOKEN' : token
    },
    sending : function(file, xhr, formData) {
        formData.append('album_id', $('form input[name=album_id]').val()); // Still a correct value here
    },
    success : function(file, response) {
        console.log(response); // Will display the Request object (see controller)
    },
    error : function(file, error) {
        console.error(error);
    }
}

控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class PictureController extends Controller {

    public function store(Request $request) {

        return response()->json(['request' => $request]); // Returns the Request object

    }

}

这是我的Request对象:

Request object

不包含任何内容......以及Ajax请求:

-----------------------------98052356720717
Content-Disposition: form-data; name="album_id"

1
-----------------------------98052356720717
Content-Disposition: form-data; name="_token"

It1DQQiXuiLJGwgJwx5UVXe1QEP7TsC1uovglxD2

1 个答案:

答案 0 :(得分:2)

嗯,我找到了一个解决方案,但我很确定这不是最好的解决方案。

在我的PictureController中,而不是像这样获取album_id参数:

$request->input('album_id')

我使用了Input门面(Laravel 4&#39; s风格):

Input::get('album_id')

我不知道为什么,但它确实有效!如果你有更好的解决方案,请确保我会选择你最好的答案。同时,我的是最好的:D