Не получить данные файла, пока используется FormData - PullRequest
0 голосов
/ 02 мая 2019

Здесь я хочу нажать на api golang, чтобы загрузить файл в локальной системе, используя javascript. Чтобы получить ключ, пару значений для файла, я прочитал метод FormData в javascript и использовал его в своем коде, но он не будет принимать ключ, значение, пока я присваиваю данные. Я разместил свой код.

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 Ответ

1 голос
/ 02 мая 2019

Это только потому, что когда вы регистрируете FormData, он не раскрывает то, что у него есть по умолчанию, вы должны явно получить его, вы можете сделать это, используя get(key) или values()

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...