Ionic android - 使用预先签名的URL将文件上传到S3(错误代码:3)

时间:2016-11-28 12:04:01

标签: android cordova amazon-s3 ionic-framework

我正在尝试使用预先签名的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。

任何帮助都将受到高度赞赏。

1 个答案:

答案 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

我希望它对某些人有用。