将文件上传到亚马逊Web服务器
问题描述:
我试图使用亚马逊网络服务上传文件,但我得到这个错误,如下图所示,因为其中的文件不会被上传到服务器:将文件上传到亚马逊Web服务器
{
"data": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>AccessDenied</Code><Message>Invalid according to Policy: Policy Condition failed: [\"starts-with\", \"$filename\", \"\"]</Message><RequestId>7A20103396D365B2</RequestId><HostId>xxxxxxxxxxxxxxxxxxxxx</HostId></Error>",
"status": 403,
"config": {
"method": "POST",
"transformRequest": [null],
"transformResponse": [null],
"url": "https://giblib-verification.s3.amazonaws.com/",
"data": {
"key": "@usc.edu/1466552912155.jpg",
"AWSAccessKeyId": "xxxxxxxxxxxxxxxxx",
"acl": "private",
"policy": "xxxxxxxxxxxxxxxxxxxxxxx",
"signature": "xxxxxxxxxxxxxxxxxxxx",
"Content-Type": "image/jpeg",
"file": "file:///storage/emulated/0/Android/data/com.ionicframework.giblibion719511/cache/1466552912155.jpg"
},
"_isDigested": true,
"_chunkSize": null,
"headers": {
"Accept": "application/json, text/plain, */*"
},
"_deferred": {
"promise": {}
}
},
"statusText": "Forbidden"
}
谁能告诉我什么是禁止403响应的原因?在此先感谢
答
您需要提供更多详细信息。你在使用哪个客户端?从外观上看,有一项政策明确否认上传。
答
它看起来像你的用户没有适当的特定S3存储桶的权限。使用AWS控制我们的IAM以分配适当的权限,包括写入。
更重要的是立即使密钥/秘密对无效,并重命名该桶。 从来没有在开放的网站上分享我们的密码。在阅读本文时,有人可能已经在使用您的凭据。
答
阅读错误:Invalid according to Policy: Policy Condition failed: [\"starts-with\", \"$filename\", \"\"]
。
您的保单文件对您没有见面的上传进行了限制,并且S3本质上是否认上传,因为您已将其告知。
没有理由在签署的政策文件中包含此条件。根据文件,这意味着你期望一个名为filename
的表单字段不能为空。但是没有这种形式领域。从你的政策中删除这个,上传应该可以工作。
慢下来。 'AWSAccessKeyId'是**不**敏感数据。签名或政策也不是。我看到的帖子中没有任何敏感内容,甚至在它被编辑之前。这是上传后的标准表单,设计为可以在网站的HTML中显示,也可以是公开的。 –