我正在使用 Appgyver 尝试使用内置的 Cordova FileTransfer 插件将图像上传到我的自定义休息服务器。
(在 ANDROID 上)这几乎是我尝试将图像上传到 REST API 的所有代码。我可以获取图像并显示它,更糟糕的是,它实际上成功并触发了回调(并告诉我正确发送了多少字节),但由于某种原因,服务器没有获取文件的任何参数。它当前返回一个空数组/对象作为它接收的参数列表。
(在 IOS 上)就回调而言,什么都没有发生,我不知道服务器是否正在接收任何东西。
我将 Laravel 4.2 与 Dingo API、干预图像和 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').....
时,没有称为文件的输入,因此什么也不返回。
任何帮助将不胜感激。