PhoneGapp FileTransfer上传到S3返回代码= 3但是工作到Heroku

时间:2015-11-04 00:09:53

标签: amazon-s3 cordova-plugins

我正试图通过Cordova FileTransfer plugin直接将我的离子应用中的图像上传到亚马逊的S3存储中。 上传到我自己的Heroku服务器,但上传到Amazon S3服务器总是失败,代码= 3(连接错误)。

我正在使用此命令启动文件传输:

ft.upload(imageURI, s3Config.url, succ, fail, options, true);

以下选项:

ImageURI: cdvfile://localhost/temporary/cdv_photo_044.jpg
Upload URI: https://8d90n90q.s3.amazonaws.com
Options:    {
  "fileKey": "file",
  "fileName": "rndcdv_photo_044.jpg",
  "mimeType": "image/jpeg",
  "params": {
    "key": "cdv_photo_044.jpg",
    "AWSAccessKeyId": "AKIAIL6Q62UVPOESBLQA",
    "acl": "public-read",
    "policy": "eyJleHBpcmF0aW9uIjoiMjAxNS0xMS0wNFQwMDowMTo0MC4xMDhaIiwiY29uZGl0aW9ucyI6W1sic3RhcnRzLXdpdGgiLCIka2V5IiwiIl0sWyJzdGFydHMtd2l0aCIsIiRDb250ZW50LVR5cGUiLCIiXSx7ImJ1Y2tldCI6IjhkOTBuOTBxIn0seyJhY2wiOiJwdWJsaWMtcmVhZCJ9XX0=",
    "signature": "BILWcf3I7IMjAXdTm0nh4Md81YI=",
    "Content-Type": "image/jpeg"
  },
  "headers": {
    "Connection": "close"
  },
  "httpMethod": "POST",
  "chunkedMode": false
}
事情尝试了:

  • 我已经验证了使用curl上传到s3的工作原理。
  • 我在S3上为所有主机启用了CORS。
  • 尝试过建议的解决方案:chunkedMode&标题(连接关闭)。

我已经使用离子应用设置了一个示例存储库来尝试:https://github.com/benmarten/ionic-s3-upload-test 您可以在第47行和49之间切换以查看差异(无法正常工作)。请帮忙!

1 个答案:

答案 0 :(得分:0)

我实际上是自己找到了解决方案。在iOS9中引入了新的策略机制,因此需要更新ionic / phonegapp config.xml文件:

<access origin="*"/>

<platform name="ios">
  <config-file platform="ios" target="*-Info.plist" parent="NSAppTransportSecurity">
    <dict>
      <key>NSAllowsArbitraryLoads</key>
      <true/>
    </dict>
  </config-file>
</platform>

要自动将这些配置填充到iOS / Android配置文件,您可以使用此挂钩: https://gist.github.com/marcocarnazzo/6f01a57d390e8fe3071f