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

标签 android cordova amazon-s3 ionic-framework

我正在尝试使用预签名 URL 将图像从 ionic 应用程序上传到 S3。

这是目前的情况:

Ionic 应用程序向服务器发送请求以从 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: "Write error: ssl=0x8ec63f80: I/O error during system call, Connection reset by peer" http_status: null source: "file:///data/user/0/com.ionicframework.xxxxxxxx/files/xxxxx.jpg" target: "https://xxxxxx.s3.eu-central- ..... "

ionic 信息 Cordova CLI:6.4.0 ionic CLI 版本:2.1.12 ionic 应用程序库版本:2.1.7

设备上的 Android 版本是 6.0

我有点困惑,因为它适用于 iOS,但不适用于 Android。我以前使用过 cordova 文件传输,但从未遇到过类似情况。然而,这是我第一次将文件从 android 直接上传到 S3。

任何帮助将不胜感激。

最佳答案

好的,不确定到底是什么问题,但问题肯定是最新版本的 cordova-plugin-file-transfer 插件(目前是 1.6.0)。此问题仅反射(reflect)在 android 平台上。

我已经安装了旧版本的插件 (1.5.1),它“修复”了这个问题。我为解决问题所做的工作:

1) 安装最新版本的 cordova npm install -g cordova

2) 安装最新版本的 ionic npm install -g ionic

3) 更新android平台ionic平台更新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

希望对大家有用。

关于android - Ionic android - 使用预签名 URL 将文件上传到 S3(错误代码 : 3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40843853/

相关文章:

android - 使用 C++ Builder Bridge 文件时出错

android - 如何在 WebView 中获取 POST 请求的 JSON 响应?

java - 当编辑文本的长度增加时,scrollView之外的listView项目在android中消失?

json - 推荐的 json 数据结构将聊天记录存储在文本文件中

amazon-s3 - Amazon S3 与 Cloudfront 托管 mp3 和图像?

java - 拒绝访问(服务: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: xxxxxxxxxxxxx)

Android Studio Gradle 构建错误 - Joda 时间

android - 具有徽章编号和分组功能的 Phonegap PushPlugin

cordova - iOS App Store 和 Android Play Store 接受 cordova-plugin-background-mode 吗?

amazon-web-services - 如何让 Terraform 读取 AWS 凭证文件?