千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > formdata格式传递参数详解

formdata格式传递参数详解

来源:千锋教育
发布人:xqq
时间: 2023-11-24 18:14:08 1700820848

一、前端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

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT