我正在使用Appgyver尝试使用内置的Cordova FileTransfer插件将图像上传到我的自定义休息服务器。
(ON ANDROID)这就是我尝试将图像上传到REST API的所有代码。我可以获取图像并显示它,更糟糕的是,它实际上成功并触发回调(并告诉我正确发送了多少字节),但由于某种原因,服务器没有获取该文件的任何参数。它当前正在返回一个空数组/对象作为它接收的参数列表。
(ON IOS)就回调而言,没有任何事情发生,我不知道服务器是否正在接收任何内容。
我正在使用Laravel 4.2和Dingo API,Intervention Image和JWT-Auth插件。
服务器代码
$scope.addPost = function(title, price, description, id, uri)
{
var fileURL = uri;
//$scope.encoded = toInternalURL(uri);
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = fileURL.substr(fileURL.lastIndexOf('/') + 1);
options.httpMethod = "POST";
//options.mimeType = "image/png";
options.chunkedMode = false;
//options.trustAllHosts = true;
var myToken = JSON.parse(localStorage.getItem("token"));
var headers =
{
'Authorization': 'Bearer ' + myToken + '',
'Content-Type': 'multipart/form-data'
};
options.headers = headers;
var params =
{
item_title: title,
item_price: price,
item_description: description,
category_id: id
};
options.params = serialize(params);
var ft = new FileTransfer();
// name of api is redacted
ft.upload(fileURL, encodeURI("name of api"), $scope.success, $scope.fail, options);
};
$scope.success = function (r)
{
supersonic.logger.log("Code = " + r.responseCode);
supersonic.logger.log(r.response);
//$scope.encoded = r.response;
supersonic.logger.log("Sent = " + r.bytesSent);
$scope.encoded = "SUCCEED";
};
$scope.fail = function (error)
{
$scope.encoded = error.body.toString();
//supersonic.logger.log(error.body.toString());
$scope.encoded = "FAIL";
};
服务器代码
public function store() {
return Input::all();
}
该函数非常简单,因为当我使用干预语法Image::make('file').....
时,没有名为file的输入,因此只返回任何内容。
非常感谢任何帮助。