formdata格式傳遞參數詳解

一、前端formdata格式傳遞參數

前端通過表單或ajax請求時,通常使用formdata格式傳遞參數。利用表單的方式傳遞參數相對簡單,只需要設置表單的enctype屬性為”multipart/form-data”即可。ajax請求時,需要創建FormData對象,並使用append()方法添加鍵值對,示例如下:


let formData = new FormData();
formData.append("username", "admin");
formData.append("password", "123456");

$.ajax({
  url: "/login",
  type: "POST",
  data: formData,
  processData: false,
  contentType: false,
  success: function(data) {
    console.log(data);
  }
});

二、formdata格式傳參數

formdata格式的參數傳遞支持多種數據類型,如文本、文件等。對於文本數據,可以直接使用FormData對象的append()方法添加鍵值對;對於文件數據,則需要通過File對象創建,再使用FormData的append()方法添加。示例如下:


let formData = new FormData();
formData.append("username", "admin");
formData.append("file", file); // file為File對象

$.ajax({
  url: "/upload",
  type: "POST",
  data: formData,
  processData: false,
  contentType: false,
  success: function(data) {
    console.log(data);
  }
});

三、formdata格式參數樣式

formdata格式的參數傳遞樣式與常規的鍵值對數據相似,使用鍵值對的形式添加參數,示例如下:


Content-Disposition: form-data; name="username"

admin

四、formdata數據格式請求

在服務器端接收formdata格式傳遞參數時,需要使用特殊的解析方式。對於表單的方式傳遞,可以使用multipart/form-data格式解析;對於ajax請求,需要使用流的方式解析。示例如下:


// 解析multipart/form-data格式
const busboy = new Busboy({ headers: req.headers });
busboy.on("file", (fieldname, file, filename, encoding, mimetype) => {
  // file為File對象
});
busboy.on("field", (fieldname, val, fieldnameTruncated, valTruncated, encoding, mimetype) => {
  // val為字段值
});
req.pipe(busboy);

// 解析流
const form = new formidable.IncomingForm();
form.parse(req, (err, fields, files) => {
  // fields為鍵值對數據,files為文件數據
});

五、formdata和json傳遞的區別

formdata格式和json格式都是一種常用的參數傳遞方式。formdata格式主要用於傳遞二進制數據或文件,而json格式則用於傳遞結構化數據。

在使用ajax請求時,如果需要傳遞二進制數據或文件,則必須使用formdata格式;如果傳遞結構化數據,則可以使用json格式。示例如下:


$.ajax({
  url: "/login",
  type: "POST",
  data: { username: "admin", password: "123456" }, // json格式
  success: function(data) {
    console.log(data);
  }
});

$.ajax({
  url: "/upload",
  type: "POST",
  data: formData, // formdata格式
  processData: false,
  contentType: false,
  success: function(data) {
    console.log(data);
  }
});

六、formdata是什麼

FormData是一種對象類型,可以用來獲取表單元素的值,創建鍵值對數據或者二進制數據,然後使用XMLHttpRequest或fetch API將數據提交到服務器端。可以使用append()添加鍵值對或二進制數據,使用delete()刪除鍵值對數據,使用entries()獲取一個用於迭代所有鍵值對的迭代器,使用get()獲取指定鍵名的鍵值對數據等等。示例如下:


let formData = new FormData();
formData.append("username", "admin");
formData.append("file", file);

console.log(formData.get("username")); // admin
console.log(formData.getAll("file")); // [File]
console.log(formData.entries()); // 返回一個迭代器
formData.delete("username");
console.log(formData.has("username")); // false

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/200294.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-05 14:04
下一篇 2024-12-05 14:04

相關推薦

  • 如何在Java中拼接OBJ格式的文件並生成完整的圖像

    OBJ格式是一種用於表示3D對象的標準格式,通常由一組頂點、面和紋理映射坐標組成。在本文中,我們將討論如何將多個OBJ文件拼接在一起,生成一個完整的3D模型。 一、讀取OBJ文件 …

    編程 2025-04-29
  • 三星內存條參數用法介紹

    本文將詳細解釋三星內存條上面的各種參數,讓你更好地了解內存條並選擇適合自己的一款。 一、容量大小 容量大小是內存條最基本的參數,一般以GB為單位表示,常見的有2GB、4GB、8GB…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python input參數變量用法介紹

    本文將從多個方面對Python input括號里參數變量進行闡述與詳解,並提供相應的代碼示例。 一、基本介紹 Python input()函數用於獲取用戶輸入。當程序運行到inpu…

    編程 2025-04-29
  • Spring Boot中發GET請求參數的處理

    本文將詳細介紹如何在Spring Boot中處理GET請求參數,並給出完整的代碼示例。 一、Spring Boot的GET請求參數基礎 在Spring Boot中,處理GET請求參…

    編程 2025-04-29
  • Python Class括號中的參數用法介紹

    本文將對Python中類的括號中的參數進行詳細解析,以幫助初學者熟悉和掌握類的創建以及參數設置。 一、Class的基本定義 在Python中,通過使用關鍵字class來定義類。類包…

    編程 2025-04-29
  • Python函數名稱相同參數不同:多態

    Python是一門面向對象的編程語言,它強烈支持多態性 一、什麼是多態多態是面向對象三大特性中的一種,它指的是:相同的函數名稱可以有不同的實現方式。也就是說,不同的對象調用同名方法…

    編程 2025-04-29
  • Hibernate日誌打印sql參數

    本文將從多個方面介紹如何在Hibernate中打印SQL參數。Hibernate作為一種ORM框架,可以通過打印SQL參數方便開發者調試和優化Hibernate應用。 一、通過配置…

    編程 2025-04-29
  • 全能編程開發工程師必知——DTD、XML、XSD以及DTD參數實體

    本文將從大體介紹DTD、XML以及XSD三大知識點,同時深入探究DTD參數實體的作用及實際應用場景。 一、DTD介紹 DTD是文檔類型定義(Document Type Defini…

    編程 2025-04-29
  • Python可變參數

    本文旨在對Python中可變參數進行詳細的探究和講解,包括可變參數的概念、實現方式、使用場景等多個方面,希望能夠對Python開發者有所幫助。 一、可變參數的概念 可變參數是指函數…

    編程 2025-04-29

發表回復

登錄後才能評論