7
Aşağıdaki kod var: Ben neysem hiçbir fikrim yokdoğrudan s3'e
<Code>AccessDenied</Code><Message>Invalid according to Policy: Policy Condition failed: ["starts-with", "$Filename", ""]</Message>
: Bu istek aşağıdaki hatayı alıyorum geçer zaman
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);
yanlış yaptığımda, blobumu şu şekilde oluşturur:
Bu m y isteği: verileri doğru yayın yapması için
------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--
[AWS Docs] 'dan (http://doc.s3.amazonaws.com/proposals/post.html#Variation_on_the_form) - dosya formdaki son öğe olmalıdır. Bu belgeyi bulmak biraz zamanımı aldı. işte burada ... – arty
Blueimp jQuery Dosyasını kullanıyorum ve kırpılmış bir görüntüyü doğrudan s3'e yüklüyorum. Bu, 'add' olayının içindeki formData'ya bir dosya özelliği eklemek için çalıştı. '' ' data.formData = { acl'ler: 'kamu okunur', AWSAccessKeyId: res.s3Key, tuşu: IMAGE_PATH, politikası: res.s3PolicyBase64, imza: res.s3Signature, dosyası: veri. dosyalar [0] } '' ' – looshi