[英]Google app script upload image to Amazon S3 using signature and policy return body is not well-formed multipart/form-data
[英]file upload ajax:The body of your POST request is not well-formed multipart/form-data
我正在嘗試使用Ajax通過直接瀏覽器上傳將文件上傳到s3
這是我的html
<form id="upload" action="//s3-ap-south-1.amazonaws.com/cushbudirect" method="POST" enctype="multipart/form-data">
<input type="hidden" name="Content-Type" value="multipart/form-data" />
<input type="hidden" name="acl" value="private" />
<input type="hidden" name="success_action_status" value="201" />
<input type="hidden" name="policy" value="eyJleHBpcmF0aW9uIjoiMjAxNy0wMy0yMVQxNDoxMTozMFoiLCJjb25kaXRpb25zIjpbeyJidWNrZXQiOiJjdXNoYnVkaXJlY3QifSx7ImFjbCI6InByaXZhdGUifSxbInN0YXJ0cy13aXRoIiwiJGtleSIsIiJdLFsiZXEiLCIkQ29udGVudC1UeXBlIiwibXVsdGlwYXJ0XC9mb3JtLWRhdGEiXSxbImNvbnRlbnQtbGVuZ3RoLXJhbmdlIiwwLDUyNDI4ODAwMF0seyJzdWNjZXNzX2FjdGlvbl9zdGF0dXMiOiIyMDEifSx7IngtYW16LWNyZWRlbnRpYWwiOiJBS0lBSlJWRVhVVFRWTjROWUFSUVwvMjAxNzAzMjFcL2FwLXNvdXRoLTFcL3MzXC9hd3M0X3JlcXVlc3QifSx7IngtYW16LWFsZ29yaXRobSI6IkFXUzQtSE1BQy1TSEEyNTYifSx7IngtYW16LWRhdGUiOiIyMDE3MDMyMVQwODExMzBaIn1dfQ==" />
<input type="hidden" name="X-amz-credential" value="AKIAJRVEXUTTVN4NYAQ/20170321/ap-south-1/s3/aws4_request" />
<input type="hidden" name="X-amz-algorithm" value="AWS4-HMAC-SHA256" />
<input type="hidden" name="X-amz-date" value="20170321T081130Z" />
<input type="hidden" name="X-amz-signature" value="152c81d87fc8bbf2642e26b28f1c41b361e7285e835971b10c74ee6d7f03b5" />
<input type="hidden" name="key" value="hello.jpg" />
<input type="file" name="file" id="image">
<input type="submit" value="upload" name="upload">
</form>
JS
$('#upload').submit(function (e) {
e.preventDefault();
//get form data
var data= new FormData($("#upload")[0]);
console.log(JSON.stringify(data));
$.ajax({
url:$(this).attr('action'),
method:"post",
processData:false,
data:image,
contentType:'multipart/form-data',
success:function (data) {
console.log(JSON.stringify(data));
},
error:function (err) {
console.log(JSON.stringify(err));
}
})
});
但是我從aws xml錯誤響應中收到以下錯誤。
您的POST請求主體不是格式正確的multipart / form-data。
我曾嘗試過類似問題的解決方案,但沒有一個對我有用。
但是,當我嘗試不使用ajax(Normal formsubmit)上傳時,上傳效果很好,所以我可以確定其與form data
有關的問題
console.log(JSON.stringify(data));
返回{}
。
嘗試按如下所示更改ajax函數,讓我知道它是否有效。
編輯:
$('#upload').submit(function (e) {
e.preventDefault();
//get form data
var data = new FormData($("#upload")[0]);
console.log(JSON.stringify(data));
$.ajax({
url:$(this).attr('action'),
type : 'PUT',
processData:false,
data:data,
contentType:data.type,
success:function (data) {
console.log(JSON.stringify(data));
},
error:function (err) {
console.log(JSON.stringify(err));
}
})
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.