我正在尝试将从相机捕获的图像上传到服务器。以下方法适用于任何Android设备,但出于某种原因,它在iOS上失败了。它返回401错误,这没有意义:
var options = new FileUploadOptions();
options.fileKey="files[]";
options.fileName = 'image_' + obj.id + '.jpg';
options.mimeType="image/jpeg";
options.chunkedMode = false;
var params = new Object();
params.headers = {
Authorization: 'Basic ' + loginCreds
}
options.params = params;
var ft = new FileTransfer();
ft.upload(imageURI, CONTEXT+'URL/files",
function(r){
alert('Finished upload!');
$.mobile.loading( 'hide' );
},
function(error){
console.log(error.http_status);
alert('Error uploading image: ' +error.http_status+ ' and code - ' +error.code);
$.mobile.loading( 'hide' );
},
options, true);
我知道iOS中设置标题存在问题,但我认为自Phonegap 1.9.0起修复了。我在这里做错了吗?
我检查了服务器日志,似乎只是在iOS中没有设置授权标头。奇怪...
答案 0 :(得分:6)
经过一整天的摔跤后,我想出了这个。事实证明,Android和iOS在如何获取头参数方面存在差异。
Android:
var params = new Object();
params.headers = {Authorization: 'Basic ' + loginCreds};
options.params = params;
OR
options.headers = {Authorization: 'Basic ' + loginCreds};
的iOS:
options.headers = {Authorization: 'Basic ' + loginCreds};
希望这能让某些人感到头疼......