使用javascript获取文件输入值以模拟表单帖子

时间:2017-10-21 04:08:31

标签: javascript ajax amazon-s3

我有一个javascript函数提交表单帖子使用简单的httppost将图像上传到s3,表单适用于提交,但我想使用ajax我发现文件输入未提交为我' m使用值字段。我试图用文件[0]抓住它,但那是空的..

httppost是否提交整个文件,我是否需要阅读文件内容或者使用ajax作为文件字段的值发布网址?!这似乎没有用。

我更喜欢ajax,因为当我使用普通提交时,它会刷新整个页面并重定向用户。我想将文件发送到s3并使用ajax从s3截取xml响应而不刷新浏览器。

在执行提交操作之前似乎没有加载文件内容,因此在表单提交之前文件的内容不可用,如何从javascript触发此操作?我没有使用jquery,所以我想知道如何将文件内容作为post变量从javascript发布。

1 个答案:

答案 0 :(得分:1)

您可以POST FileBlob直接通过在body fetch()调用时设置实例,或将File对象追加到FormData对象和POST multipart/form-data到服务器。

document.querySelector("input[type=file]")
.onchange = e => {
  if (e.target.files.length)
    fetch("/path/to/server", {
      method:"POST",
      body:e.target.files[0]
    })
    .then(response => console.log(response.ok))
    .catch(err => console.error(err))
  }
}