直接上传blob到s3有问题
Having problems uploading blob directly to s3
我有以下代码:
var fd = new FormData();
var key = "events/" + (new Date).getTime() + '-';
fd.append('key', key);
fd.append('acl', Acl);
fd.append('Content-Type', "image/jpeg");
fd.append('AWSAccessKeyId', AWSAccessKeyId);
fd.append('policy', Policy);
fd.append('name', "Policy13492345");
fd.append('success_action_status', "201");
fd.append('signature', Signature);
fd.append("file", blob);
fd.append("filename", fileName + ".jpg");
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.open('POST', 'https://s3.amazonaws.com/' + Bucket + '/', true);
xhr.send(fd);
当这个请求通过时,我得到以下错误:
<Code>AccessDenied</Code><Message>Invalid according to Policy: Policy Condition failed: ["starts-with", "$Filename", ""]</Message>
我不知道我做错了什么,我生成我的blob像这样:
function dataURItoBlob(dataURI) {
var binary = atob(dataURI.split(',')[1]);
var array = [];
for (var i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]
return new Blob([new Uint8Array(array)], { type: mimeString });
}
这是我的请求:
------WebKitFormBoundaryxh8thnHAmDhZQuXE
Content-Disposition: form-data; name="key"
events/1367541109750-
------WebKitFormBoundaryxh8thnHAmDhZQuXE
Content-Disposition: form-data; name="acl"
private
------WebKitFormBoundaryxh8thnHAmDhZQuXE
Content-Disposition: form-data; name="Content-Type"
image/jpeg
------WebKitFormBoundaryxh8thnHAmDhZQuXE
Content-Disposition: form-data; name="AWSAccessKeyId"
asdfasdfFASDFSDFAADSFHHVDQ
------WebKitFormBoundaryxh8thnHAmDhZQuXE
Content-Disposition: form-data; name="policy"
FsnY29udFuZ2UnLCAwLCAxMDAwMDAwMDBdLAogICAgICasdfasdfAgIFsgJ3N0YXJ0cy13aXRoJywgJyRrZXknLCAnJyBdLAogICAgICAgIFsgJ3N0YXJ0cy13aXRoJywgJyRDb250ZW50LVR5cGUnLCAnasdfJyBdLAo
------WebKitFormBoundaryxh8thnHAmDhZQuXE
Content-Disposition: form-data; name="name"
Policy134722343242345
------WebKitFormBoundaryxh8thnHAmDhZQuXE
Content-Disposition: form-data; name="success_action_status"
201
------WebKitFormBoundaryxh8thnHAmDhZQuXE
Content-Disposition: form-data; name="signature"
basdfasdftwa/9asdfasdfx3/zasdfadsft6g=
------WebKitFormBoundaryxh8thnHAmDhZQuXE
Content-Disposition: form-data; name="file"; filename="blob"
Content-Type: image/jpeg
------WebKitFormBoundaryxh8thnHAmDhZQuXE
Content-Disposition: form-data; name="filename"
C:'fakepath'495845894.jpg
------WebKitFormBoundaryxh8thnHAmDhZQuXE--
解决了问题,对表单数据排序很重要,您必须遵循正确的顺序才能正确发布数据
相关文章:
- 这个条件语句的逻辑有问题
- 什么'这个javascript代码getElementById有问题
- 如何处理流星变量&对miniMongo有问题
- 谷歌表单xml有问题
- Html、css和jQuery.我的代码有问题
- 有问题的突出显示(悬停)一个系列,突出显示图表
- D3 折线图示例 - 日期有问题
- 页面刷新后javascript内存泄漏有问题吗?为什么?
- 有问题的键代码186和222,如何捕捉它们
- 循环 += 十进制变量的 javascript 有问题
- 随机数生成器,what'我的方法/统计数据有问题吗?[JS]
- 为了在列表中搜索,角度过滤器有问题
- 我对按钮的作用域有问题'的听众
- 为什么我的setInterval有问题
- Javascript在每个有问题的控件上输出一条错误消息
- url的正则表达式有问题
- 没有按钮的Javascript滚动器有问题
- 我的javascript函数有问题,我认为是document.getElementById('vodObj
- Jquery中的mousemove和图像有问题
- 直接上传blob到s3有问题