我正在从AngularJS发送一个简单的帖子请求到包含名称和图像的Laravel API。问题是当我提交请求时,它会在很长一段时间内处于待决状态。我检查了代码,但我认为没有任何因素导致请求花费那么多时间。
我正在使用ng-file-upload,而这正是我在Angular方面所做的事情:
service.store = function(hotel){
console.log('uploading..');
return Upload.upload({
url: 'api/hotels',
method: 'POST',
fields: hotel,
file: [hotel.logo],
fileFormDataName: 'file[]',
headers:{
'Content-Encoding': 'gzip'
}
}).success(function (response){
console.log(response)
service.result = response;
}).error(function (response){
service.errors = response;
});
};
和Laravel方面:
try{
$hotel = new Hotel;
$hotel->name = $request->name;
$hotel->booking_availability = 0;
$hotel->save();
$slug = str_slug($request->name, "-");
$hotel->slug = $slug."-".$hotel->id;
$hotel->save();
if(isset($_FILES['file'])){
$type = explode("/", $_FILES['file']['type'][0]);
$name = date_timestamp_get(date_create()) . "." . $type[1];
$target = 'img/hotels/logo/original/'.$name;
$tmp_name = $_FILES['file']['tmp_name'][0];
move_uploaded_file($tmp_name, "$target");
$hotel->logo = $name;
$hotel->logo_path = $target;
$hotel->save();
}
return response()->json(['hotel' => $hotel], 200);
}catch(Exception $e){
return response()->json(['error' => $e], 500);
}
修改
我尝试在发送帖子请求之前使用gzip
来压缩内容,以减少所需的时间,但没有任何改变。