微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 使用AJAX直接上传到amazon S3

我正在尝试将文件从浏览器上传到s3亚马逊,我已经修改了CORS策略规则以允许存储桶的帖子,但我收到了错误

<?xml version="1.0" encoding="UTF-8"?>
    <Error><Code>InvalidArgument</Code><Message>Bucket POST must contain a field named 'key'.  If it is specified,please check the order of the fields.</Message>
<ArgumentValue></ArgumentValue><ArgumentName>key</ArgumentName><RequestId>1E0A8DC78C0CEA9A</RequestId><HostId>XN38Qje9hUrGqHNIhtT8CtowX9tXlpyfEoaXb1UNxlsyLOWreh2mKqKVXg1zjLVl</HostId></Error>

这是我的请求和响应,我仍然通过仍然收到此错误以正确的顺序传递关键参数

任何人都可以告诉我它有什么问题,我正在使用FormData提交请求

任何帮助将不胜感激.

谢谢

编辑:这是代码请检查

var form_data = new FormData();         
                form_data.append('file',hdlr.file);
                //form_data.append('crop_type',settings.get_cropped_type());
                //form_data.append('attributes',JSON.stringify(file_attr));
                $('input:hidden',$form).each(function(){

                    form_data.append(this.name,this.value);

                });


                //finally post the file through AJAX  
                var xhr = new XMLHttpRequest();  
                xhr.open("POST",$form[0].action,true);  
                xhr.send(form_data);

解决方法

看起来您的文件表单字段首先出现在请求中.我无法确定,因为您没有在答案中包含整个请求有效负载,但看起来它出现在“key”字段的正上方. AWS会在文件字段后忽略请求中的所有字段,因此所有其他字段必须出现在文件之前.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐