Angular / JS将图像上传到AWS预签名URL

时间:2016-10-09 16:17:41

标签: javascript angularjs amazon-web-services

每次我尝试将图片上传到预先签名的网址时。我收到预检警告,上传失败。

我需要做什么?

enter image description here

据我所知,我应该上传到图片中url属性中可以看到的网址。

我尝试了各种各样的变体,但这是我目前的上传代码:

$.ajax({
      type: 'PUT',
      url: pData.url,
      // Content type must much with the parameter you signed your URL with
      contentType: 'binary/octet-stream',
      // this flag is important, if not set, it will try to send data as a form
      processData: false,
      // the actual file is sent raw
      data: $scope.file
    })
    .success(function() {
      alert('File uploaded');
    })
    .error(function() {
      alert('File NOT uploaded');
      console.log( arguments);
    });

我如何解决这个问题,我无法访问给我签名网址的后端,可能是负责人或亚马逊有错误的CORS,我该怎么检查?

感谢任何建议。

1 个答案:

答案 0 :(得分:0)

这是CORS问题。您需要请管理员将其放入S3存储桶的CORS配置中。

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>