Laravel 5 - DropzoneJS:请求对象为空
Laravel 5 - DropzoneJS: Request object is empty
我决定将网站从 Laravel 4.3 升级到 Laravel 5.1,但我遇到了一个奇怪的问题。
我正在尝试使用 DropzoneJS 库上传一些图片。我告诉这个图书馆:"Before sending the pictures to /pictures/store
(with an Ajax POST method), adds the album_id
parameter to the request".
这部分工作正常,但在我的 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
}
}
这是我的请求对象:
不包含任何内容...并且 Ajax 请求:
-----------------------------98052356720717
Content-Disposition: form-data; name="album_id"
1
-----------------------------98052356720717
Content-Disposition: form-data; name="_token"
It1DQQiXuiLJGwgJwx5UVXe1QEP7TsC1uovglxD2
好吧,我找到了解决方案,但我很确定这不是最好的。
在我的 PictureController
中,而不是像这样获取 album_id
参数:
$request->input('album_id')
我使用了 Input
外观(Laravel 4 的风格):
Input::get('album_id')
我不知道为什么,但它有效!如果您有更好的解决方案,请确保我会选择您的最佳答案。与此同时,我的是最好的 :D
我决定将网站从 Laravel 4.3 升级到 Laravel 5.1,但我遇到了一个奇怪的问题。
我正在尝试使用 DropzoneJS 库上传一些图片。我告诉这个图书馆:"Before sending the pictures to /pictures/store
(with an Ajax POST method), adds the album_id
parameter to the request".
这部分工作正常,但在我的 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
}
}
这是我的请求对象:
不包含任何内容...并且 Ajax 请求:
-----------------------------98052356720717
Content-Disposition: form-data; name="album_id"
1
-----------------------------98052356720717
Content-Disposition: form-data; name="_token"
It1DQQiXuiLJGwgJwx5UVXe1QEP7TsC1uovglxD2
好吧,我找到了解决方案,但我很确定这不是最好的。
在我的 PictureController
中,而不是像这样获取 album_id
参数:
$request->input('album_id')
我使用了 Input
外观(Laravel 4 的风格):
Input::get('album_id')
我不知道为什么,但它有效!如果您有更好的解决方案,请确保我会选择您的最佳答案。与此同时,我的是最好的 :D