我有一个使用AWS S3 Presigned POST直接发布到AWS S3存储桶的表单,因此在表单提交后我无法控制服务器端的操作。
如何检测表单提交/上传过程何时完成?
以下是我如何生成表单:
<form<?php foreach ($data['upload_link']['formAttributes'] as $key => $value) {
echo " $key=\"$value\"";
} ?>>
<?php foreach ($data['upload_link']['formInputs'] as $key => $value) {
echo "<input type=\"hidden\" name=\"$key\" value=\"$value\">";
} ?>
<input type="file" name="file" id="file"/>
</form>
<button type="submit" onclick="submitFile()">Upload</button>
以下是我正在使用的javascript:
function submitFile() {
document.getElementsByTagName('form')[0].submit();
document.getElementById('file').value = '';
updateUploads();
}
我希望暂停执行updateUploads()函数,直到上传完成。现在,它正在更新太快,因此最新的上传不会填充列表。
我试图用此提交而产生 412(先决条件失败):
$.ajax({
url: form.attr('action'),
type: form.attr('method'),
data: form.data,
success: function (data) {
// stuff
},
contentType: false
});
将contentType设置为&#39; multipart / form-data&#39; 产生400(错误请求)并使用FormData对象给我 Uncaught TypeError:非法调用