【发布时间】:2016-11-22 00:20:55
【问题描述】:
我正在使用 laravel php 和 XMLHttpRequest() 上传图片,但出现以下错误
RouteCollection.php 第 218 行中的 MethodNotAllowedHttpException
以下是我处理表单提交的 javascript 代码:
$(document).on('submit','form',function(e){
e.preventDefault();
$form=$(this);
uploadImage($form);
});
function uploadImage($form){
$form.find(".progress-bar").removeClass("progress-bar-success").removeClass("progress-bar-danger");
var formdata=new FormData($form[0]);
var request=new XMLHttpRequest();
// progress event...
request.upload.addEventListener('progress',function(e){
var percent=Math.round(e.loaded/e.total * 100);
console.log('progress: '+percent);
$form.find('.progress-bar').width(percent+'%').html(percent+'%');
});
// progress completed load event
request.upload.addEventListener('load',function(e){
var percent=e.loaded/e.total * 100;
console.log('load: '+percent);
$form.find('.progress-bar').addClass('progress-bar-success').html('upload completed');
});
request.open('post','productImage.add');
request.send(formdata);
$form.on('click','.cancel',function(){
request.abort();
$form.find('.progress-bar').addClass('progress-bar-danger').removeClass('progress-bar-success').html('upload aborted...');
});
}
这是我的 html 表单,其信息被发送到 php 路由
<form role="form">
<label>Product Image:</label>
<input type="file" name="image">
<button type="submit" class="btn btn-info btn-sm upload">Upload</button>
<button type="button" class="btn btn-danger btn-sm cancel">Cancel</button>
<div class="progress progress-striped active">
<div class="progress-bar" style="width:0%"></div>
</div>
</form>
这是我的路线文件:
Route::group(['prefix' => 'admin'], function () {
Route::get('/', function () {
return view('welcome');
});
Route::auth();
Route::get('/home', [
'uses'=>'HomeController@index',
'as'=>'home'
]);
Route::post('/productAdd', [
'uses'=>'productsController@add',
'as'=>'product.add'
]);
Route::post('/productImageAdd', [
'uses'=>'productsController@addImage',
'as'=>'productImage.add'
]);
});
最后这是我的后控制器代码:
class productsController extends Controller
{
function add(Request $request){
$product= new product();
$product->productName=$request["name"];
$product->description=$request["description"];
$product->discount=$request["discount"];
$request->user()->products()->save($product);
return redirect()->route('home');
}
function addImage(Request $request){
print_r($request);
}
}
【问题讨论】:
-
CSRF 保护呢?到位了吗?
标签: php laravel xmlhttprequest