BlueImp文件上传“错误:方法不允许” - Laravel 4路由问题
BlueImp文件上传“错误:方法不允许” - Laravel 4路由问题
我正在使用Blueimp.jquery file-upload进行文件上传。我的应用程序也在Laravel 4
框架下,但在上传文件时出现了错误。\n在Firefox和Chrome中,该API
返回的错误是:\n错误:方法不允许
\n我认为这个错误与Laravel
中的routing
有关,因为我在Firebug
开发控制台中发现了以下内容:\n{\"error\":{\"type\":\"Symfony\\\\Component\\\\HttpKernel\\\\Exception\\\\MethodNotAllowedHttpException\",\"message\":\"\",\"file\":\"C:\\\\xampp\\\\htdocs\\\\digisells\\\\vendor\\\\laravel\\\\framework\\\\src\\\\Illuminate\\\\Routing\\\\RouteCollection.php\",\"line\":210}}
\n这是表单代码:\n
{{ Form::open(['route'=>'image.store','id'=>'fileupload','files'=>true]) }}
\n这是表单的routes
代码:\n
Route::resource('image', 'ImageUploadController');
\n在ImageUploadController
中,我有以下代码:\n
public function store() { $file = Input::file('thumbnail'); $file = move(public_path().'/product/images/temp/', $file=>getClientOriginaLName()); }
\n如果routing
是问题的原因,我应该如何在我的routes
文件中注册这些routes
?我指的是我需要使用哪些动词和每个函数内部的代码?或者还有其他可能的解决方案吗?谢谢。
BlueImp文件上传“错误:方法不允许”- Laravel 4路由问题的原因和解决方法
问题的原因是在使用BlueImp文件上传插件时,出现了“错误:方法不允许”的提示。解决方法如下:
首先,通过添加以下代码解决该问题:
$('.image-upload').fileupload({ url: '/upload/image', dataType: 'JSON', method: 'POST', done: function (e, data) { //console.log(data); $.each(data.result.files, function (index, file) { $('').text(file.name).appendTo($('.image-placeholder')); }); } });
然后,您会收到csrf错误,可以通过添加csrf字段来解决该问题。具体操作可以参考以下链接:
[StackOverFlow](https://stackoverflow.com/questions/46466167)
问题的原因是Blueimp.jquery file-upload和Laravel 4之间的路由问题。根据jquery-file-upload的文档,它应该使用POST方法,但实际上需要添加一个使用PUT方法的路由来解决这个问题。
解决方法是在路由中添加一个使用PUT方法的路由,并将其与Ajax调用关联起来。具体代码如下:
Route::put('upload/image', array('as' => 'admin.upload', 'uses' => 'App\Controllers\Admin\ImageController'));
在Javascript的调用中,需要将url参数设置为'/upload/image',并将dataType设置为'JSON'。具体代码如下:
$('.image-upload').fileupload({ url: '/upload/image', dataType: 'JSON', //type: 'POST', done: function (e, data) { //console.log(data); $.each(data.result.files, function (index, file) { $('').text(file.name).appendTo($('.image-placeholder')); }); } });
另外,如果在请求中添加了额外的'data.formData'(如文档中所描述),它将使用POST方法而不是PUT方法。
以上就是解决BlueImp File Upload "Error: Method Not Allowed" - Laravel 4 Routing Issue的方法。