使用FormData时未获取文件数据

时间:2019-05-02 09:09:18

标签: javascript file-upload upload

在这里,我想点击golang的api,以使用javascript在本地系统上载文件。为了获取密钥,文件的值对,我在javascript中读取了FormData方法,并在代码中使用了它,但是在分配数据时,它将不采用密钥,值。我已经发布了我的代码。

function uploadFile(){
          var url = "http://localhost:8081/shapi/v1/upload";
          var archivoSeleccionado = document.getElementById("myfile");
          var file = archivoSeleccionado.files[0];
          var f = new FormData();
          console.log(file)
          f.append("file", file);
          console.log("f", f)
          var xmlHTTP= new XMLHttpRequest();
          xmlHTTP.open("POST", url, true);
          xmlHTTP.send(f);
}

console.log(file)的控制台中,它将打印

File { name: "541660.jpg", lastModified: 1537849576000, webkitRelativePath: "", size: 243477, type: "image/jpeg" }

console.log("f", f)的控制台中,它将打印:-

FormData {  }

有人可以告诉我代码中的问题吗?

可运行代码段

function uploadFile() {
  var archivoSeleccionado = document.getElementById("myfile");
  var file = archivoSeleccionado.files[0];
  var f = new FormData();
  console.log(file)
  f.append("file", file);
  console.log("f", f)
}
<input id="myfile" type="file" />
<button onclick="uploadFile()">Upload</button>

1 个答案:

答案 0 :(得分:1)

这仅仅是因为当您登录FormData时,默认情况下它没有公开它的内容,因此您必须显式地获取它,您可以使用get(key)或{{3 }}

function uploadFile() {
  var archivoSeleccionado = document.getElementById("myfile");
  var file = archivoSeleccionado.files[0];
  var f = new FormData();
  console.log(file)
  f.append("file", file);
  console.log("f", f.get("file"))
}
<input id="myfile" type="file" />
<button onclick="uploadFile()">Upload</button>