我在Cordova的fileTransfert插件上遇到了一个奇怪的问题(目标设备是Android 4.3,它可以在Android 6.0上运行(。我只是来上传两个文件。第一次和第三次发送工作正常,但第二次返回错误代码 3,日志中带有以下错误消息:
E/FileTransfer(15179): {"target":"https://XXXX/uploadTeamPicture","http_status":0,"code":3,"source":"file:///storage/emulated/0/Pictures/2017_4_14/XXXXX_14-15-00.jpeg","exception":"Write error: ssl=0x6e653128: I/O error during system call, Broken pipe"}
这是函数
// Manage File sending
function uploadFile(webAddr,fileURL,params)
{
// when it's finished
var win = function (r) {
alert("Picture has been sent correctly !","Information");
$("#takePicture").hide();
resetAppli();
fileTrans.abord();
};
// if upload failed
var fail = function (error) {
var msg="Please take another picture n";
msg+="An error has occurred: Code = " + error.code;
msg+="n src:"+error.source;
msg+="n trgt:"+error.target;
alert(msg);
$("#takePicture").hide();
resetAppli();
};
var uri = encodeURI(webAddr);
var options = new FileUploadOptions();
options.fileKey="fileToUpload";
options.fileName=fileURL.substr(fileURL.lastIndexOf('/')+1);
options.mimeType="text/plain";
var headers={'headerParam':'headerValue'};
options.headers = headers;
options.params = params;
//var ft = new FileTransfer();
var ft=fileTrans;
ft.onprogress = function(progressEvent) {
if (progressEvent.lengthComputable) {
//loadingStatus.setPercentage(progressEvent.loaded / progressEvent.total);
uploadProgress(progressEvent);
var infoProg=(progressEvent.loaded / progressEvent.total);
console.log("Progress :" + infoProg);
} else {
//loadingStatus.increment();
}
};
// init progress bar before sending
initProgressBar();
// send file
ft.upload(fileURL, uri, win, fail, options);
}
如果有人有想法...非常感谢您的帮助
在这里找到解决方案:在Android 4.3上使用Phonegap中的FileTransfer将文件上传到S3时的代码3
只需在参数表末尾添加 true 选项即可。
尝试更改函数的这一行
ft.upload(fileURL, uri, win, fail, options);
对此:
ft.upload(fileURL, uri, win, fail, options, true);
还有这一行:
var headers={'headerParam':'headerValue'};
对此:
var headers={Connection:'close'};