我正在尝试使用预先签名的URL将图像从离子应用程序上传到S3。
这是目前的情况:
离子应用程序向服务器发送请求以从AWS S3获取预先签名的上传URL。
在服务器端,我有一个节点应用程序正在使用aws-sdk获取预签名URL,然后将其返回给客户端。
这是我在Ionic方面的代码,应该将文件上传到AWS
var options = {
fileKey: 'file',
fileName: fileName,
mimeType: 'image/jpeg',
chunkedMode: false,
timeout: 300000,
httpMethod:'PUT',
encodeURI: false,
headers: {
'Content-Type': 'image/jpeg'
}
};
var ft = new FileTransfer();
ft.upload(cordova.file.dataDirectory + fileName, uploadLink, function () {
console.log("image uploaded");
}, function (err) {
console.log(err);
}, options);
此代码适用于iOS设备,但是当我将应用程序部署到Android并尝试上传文件时,它失败并出现以下错误:
FileTransferError body:null code:3 exception:“写入错误: ssl = 0x8ec63f80:系统调用期间的I / O错误,连接重置为 peer“http_status:null source: “文件:///data/user/0/com.ionicframework.xxxxxxxx/files/xxxxx.jpg” 目标:“https://xxxxxx.s3.eu-central- .....”
离子信息 Cordova CLI:6.4.0 离子CLI版本:2.1.12 Ionic App Lib版本:2.1.7
设备上的Android版本为6.0
我有点困惑,因为它在iOS上工作,但它不适用于Android。我之前使用过cordova文件传输,但从未遇到类似的情况。然而,这是我第一次直接从android上传文件到S3。
任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
好的,不确定究竟是什么问题,但问题肯定是最新版本的cordova-plugin-file-transfer插件(此时它是1.6.0)。此问题仅反映在Android平台上。
我已安装旧版本的插件(1.5.1),其中"已修复"问题。我采取了哪些措施来解决我的问题:
1)安装最新版本的cordova npm install -g cordova
2)安装最新版本的离子npm install -g ionic
3)更新android平台ionic platform update android
4)删除插件ionic plugin remove cordova-plugin-file-transfer
5)安装以前版本的插件ionic plugin add cordova-plugin-file-transfer@1.5.1
6)保存对package.json ionic state save
7)ionic run android
我希望它对某些人有用。