千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > formdata格式傳遞參數(shù)詳解

formdata格式傳遞參數(shù)詳解

來(lái)源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-11-24 18:14:08 1700820848

一、前端formdata格式傳遞參數(shù)

前端通過(guò)表單或ajax請(qǐng)求時(shí),通常使用formdata格式傳遞參數(shù)。利用表單的方式傳遞參數(shù)相對(duì)簡(jiǎn)單,只需要設(shè)置表單的enctype屬性為"multipart/form-data"即可。ajax請(qǐng)求時(shí),需要?jiǎng)?chuàng)建FormData對(duì)象,并使用append()方法添加鍵值對(duì),示例如下:


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格式傳參數(shù)

formdata格式的參數(shù)傳遞支持多種數(shù)據(jù)類(lèi)型,如文本、文件等。對(duì)于文本數(shù)據(jù),可以直接使用FormData對(duì)象的append()方法添加鍵值對(duì);對(duì)于文件數(shù)據(jù),則需要通過(guò)File對(duì)象創(chuàng)建,再使用FormData的append()方法添加。示例如下:


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

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

三、formdata格式參數(shù)樣式

formdata格式的參數(shù)傳遞樣式與常規(guī)的鍵值對(duì)數(shù)據(jù)相似,使用鍵值對(duì)的形式添加參數(shù),示例如下:


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

admin

四、formdata數(shù)據(jù)格式請(qǐng)求

在服務(wù)器端接收f(shuō)ormdata格式傳遞參數(shù)時(shí),需要使用特殊的解析方式。對(duì)于表單的方式傳遞,可以使用multipart/form-data格式解析;對(duì)于ajax請(qǐng)求,需要使用流的方式解析。示例如下:


// 解析multipart/form-data格式
const busboy = new Busboy({ headers: req.headers });
busboy.on("file", (fieldname, file, filename, encoding, mimetype) => {
  // file為File對(duì)象
});
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為鍵值對(duì)數(shù)據(jù),files為文件數(shù)據(jù)
});

五、formdata和json傳遞的區(qū)別

formdata格式和json格式都是一種常用的參數(shù)傳遞方式。formdata格式主要用于傳遞二進(jìn)制數(shù)據(jù)或文件,而json格式則用于傳遞結(jié)構(gòu)化數(shù)據(jù)。

在使用ajax請(qǐng)求時(shí),如果需要傳遞二進(jìn)制數(shù)據(jù)或文件,則必須使用formdata格式;如果傳遞結(jié)構(gòu)化數(shù)據(jù),則可以使用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是一種對(duì)象類(lèi)型,可以用來(lái)獲取表單元素的值,創(chuàng)建鍵值對(duì)數(shù)據(jù)或者二進(jìn)制數(shù)據(jù),然后使用XMLHttpRequest或fetch API將數(shù)據(jù)提交到服務(wù)器端。可以使用append()添加鍵值對(duì)或二進(jìn)制數(shù)據(jù),使用delete()刪除鍵值對(duì)數(shù)據(jù),使用entries()獲取一個(gè)用于迭代所有鍵值對(duì)的迭代器,使用get()獲取指定鍵名的鍵值對(duì)數(shù)據(jù)等等。示例如下:


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()); // 返回一個(gè)迭代器
formData.delete("username");
console.log(formData.has("username")); // false

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專(zhuān)屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
linux寫(xiě)時(shí)拷貝,linux 寫(xiě)時(shí)拷貝技術(shù)

Linux編程文件內(nèi)容復(fù)制linux編程文件可以使用cp命令來(lái)實(shí)現(xiàn)文件復(fù)制。例如,如果要將文件filetxt復(fù)制到文件夾folder2中,可以在終端中輸入以下...詳情>>

2023-11-24 20:45:33
深入了解npm run lint

一、什么是npm run lint?npm run lint是一個(gè)非常強(qiáng)大的命令,它可以自動(dòng)檢查代碼中的潛在錯(cuò)誤和不規(guī)范的格式,從而提供了對(duì)代碼質(zhì)量的保證。npm...詳情>>

2023-11-24 20:12:57
用法介紹plt.errorbar

一、參數(shù)介紹plt.errorbar是matplotlib庫(kù)中的一個(gè)函數(shù),用于繪制帶誤差線(xiàn)的線(xiàn)圖。它的主要參數(shù)有:1. x、y指定數(shù)據(jù)的橫縱坐標(biāo),必須是數(shù)組或者...詳情>>

2023-11-24 20:09:21
Top Time+ 編程框架詳解

一、簡(jiǎn)介T(mén)op Time+ 是一套開(kāi)源的編程框架,目的是為了讓開(kāi)發(fā)者更快速簡(jiǎn)單地構(gòu)建高效可擴(kuò)展的Web應(yīng)用,降低企業(yè)級(jí)Web應(yīng)用的開(kāi)發(fā)難度。它支持常用...詳情>>

2023-11-24 20:05:45
Oracle增加表字段的幾種方法

一、使用ALTER TABLE語(yǔ)句增加表字段ALTER TABLE語(yǔ)句可以用來(lái)修改表結(jié)構(gòu),包括增加、刪除、修改字段以及修改表的約束等。如果要增加一個(gè)字段,可...詳情>>

2023-11-24 19:44:09
久久亚洲中文字幕精品一区四,亚洲日本另类欧美一区二区,久久久久久久这里只有免费费精品,高清国产激情视频在线观看
亚洲一区二区三区污网站 | 亚洲精品精品国产一线久 | 亚洲欧美国产精品有字幕 | 亚洲AV最新高清每天更新 | 亚洲中文欧美日韩在线 | 中文字幕国内自拍 |