将变量数据(字符串)作为文件上载到公共AWS桶

时间:2018-05-04 05:32:46

标签: javascript jquery forms amazon-web-services amazon-s3

我有一个包含文件输入字段的表单,如下所示:

<form id="upload" action="http://touchtracker.s3-us-west-1.amazonaws.com/" method="post" enctype="multipart/form-data">
    <input type="hidden" name="key" value="Hansol/${filename}"><br>
    <input type="file" id="fileUpload" name="file"> <br>
    <input type="submit" name="submit" value="Upload to  Amazon S3">
</form>

此表单将文件提交到公共AWS存储桶。此外,我有一个名为bugout的变量,它包含一些冗长的日志。我希望能够使用此表单将文件上传到我的AWS账户,该文件应包含此变量bugout中包含的数据。

我尝试使用如下的formData,但导致400错误

var fd = new FormData();
var file = new Blob([bugout.output], {type: 'plain/text'});
fd.append('file', file, 'fileName.txt');
fd.append('key','subFolder/${filename}');
$.ajax({
    url: 'http://touchtracker.s3-us-west-1.amazonaws.com/',
    method: 'post',
    data: fd,
    processData: false,        //this...
    contentType: false         //and this is for formData type
});

我尝试发送&#34; abcd&#34;而不是bugout.output,所以可能没有问题。 AWS site上有大量错误代码有400状态。我怎么从这里弄清楚? enter image description here

1 个答案:

答案 0 :(得分:0)

这只是Formdata的两个附加顺序的问题。更改为以下顺序解决了问题。

fd.append('key','subFolder/${filename}');
fd.append('file', file, 'fileName.txt');