【发布时间】:2018-03-11 03:01:36
【问题描述】:
我正在尝试将名为“quotes.png”的图像上传到我的 Ionic 2 应用程序中的 s3 存储桶(没有使用节点),但它显示“网络故障”。
这就是我的代码的样子(省略了敏感信息):
import AWS from 'aws-sdk';
import S3 from 'aws-sdk/clients/s3';
AWS.config.update({ accessKeyId: 'myaccesskeyid', secretAccessKey: 'mysecretaccesskey' })
var s3 = new AWS.S3();
var params = {
Bucket: 'mybucketname',
Key: 'assets/img/quotes.png',
Body: "hello"
};
s3.putObject(params, function (err, res) {
if (err) {
console.log(err);
} else {
debugger;
console.log("Successfully uploaded data to myBucket/myKey");
}
});
(已更新)这是错误的详细信息:
XMLHttpRequest cannot load https://mybucket-name.s3-ap-southeast-
1.amazonaws.com/assets/img/quotes.png. Response to preflight request doesn't
pass access control check: No 'Access-Control-Allow-Origin' header is
present on the requested resource. Origin 'http://localhost:8100' is
therefore not allowed access. The response had HTTP status code 403.
Error: Network Failure
at XMLHttpRequest.<anonymous> (xhr.js:52)
at t.invokeTask (polyfills.js:3)
at Object.onInvokeTask (ng_zone.js:227)
at t.invokeTask (polyfills.js:3)
at e.runTask (polyfills.js:3)
at XMLHttpRequest.invoke (polyfills.js:3)
注意:我不在我的 Ionic 2 应用程序中使用节点 js。我正在使用 Parse JavaScript SDK、AWS S3、AWS EC2、Elastic beanstalk 和 Ionic 2 与 Angular 2。
所以问题是:我是否正确编写了我的代码/我的代码有问题吗?谢谢:)
【问题讨论】:
-
嗨@Antoni。您是否在 config.xml 中请求了对 ionic 应用程序的 Internet 访问权限?
-
嗨@Ashan,我的应用程序具有互联网访问权限,因为它可以使用解析服务器上传文件。
-
您是否还在 S3 存储桶中设置了 CORS 以允许来自任何来源的请求?
-
嗨,Ashan,在设置 CORS 后,通过编辑权限解决了该错误。顺便说一句,感谢您的帮助!
标签: angular amazon-web-services amazon-s3 amazon-ec2 amazon-elastic-beanstalk