簡體   English   中英

multipart/form-data 可以用javascript發送嗎?

[英]multipart/form-data possible to send with javascript?

我使用這種形式通過 POST 發送一個文件和文本“名稱”:

<form enctype="multipart/form-data" action="https://site[DOT]net/upload" method="post">
  <input id="name" type="text" />
  <input id="data" type="file" />
  <button type="submit" name="submit" />
</form>

我想使用 javascript 做同樣的事情。 另外我不想被重定向。 我想留在 html 頁面上,只顯示一個彈出窗口“上傳完成”。 我怎樣才能在 javascript(沒有 jquery)中做到這一點?

編輯:

我試過這段代碼,但 POST 不起作用:

<script>
function uploader {
  var formData = new FormData();
  formData.append("name", "Smith");
  formData.append("data", fileInputElement.files[0]);
  var request = new XMLHttpRequest();

  request.open("POST", "https://site[DOT]net/upload");
  request.send(formData);
}
</script>

<form>
    <input id="name" type="text" />
    <input id="data" type="file" />
    <button type="submit" name="submit" />
    <button onclick="uploader()">Click</button>
</form>

使用 javascript 上傳整個表單,包括文件,可以通過使用FormData APIXMLHttpRequest來完成

var form = document.getElementById('myForm'); // give the form an ID
var xhr  = new XMLHttpRequest();              // create XMLHttpRequest
var data = new FormData(form);                // create formData object


xhr.onload = function() {
    console.log(this.responseText); // whatever the server returns
}

xhr.open("post", form.action);      // open connection
xhr.send(data);                     // send data

如果您需要支持 IE10 及以下版本,它會變得越來越復雜,並且在某些情況下需要通過 iFrame 等發布。

如果有人想用新形式而不是 xhr 來做到這一點,這是等效的。 另請參閱: 使用多部分表單數據獲取帖子

 var form = document.getElementById('formid'); form.onsubmit = async (e) => { e.preventDefault(); const form = e.currentTarget; const url = form.action; try { const formData = new FormData(form); const response = await fetch(url, { method: 'POST', body: formData }); console.log(response); } catch (error) { console.error(error); } }
 <form id="formid" enctype="multipart/form-data" action="#" method="post"> <input id="name" type="text" /> <input id="data" type="file" /> <button type="submit" name="submit">Submint</button> </form>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM