简介
在前端开发中,我们常常需要向后端服务器发送表单数据。而表单数据不仅仅是字符串,可能还需要包含文件。此时,我们可以使用 form-data
这个标准的 MIME 类型来发送请求,而 form-data-object
是一个能够方便地将表单封装成 form-data
的工具。
安装
使用 npm 进行安装:
npm install form-data-object
然后在你的代码中引入:
const FormData = require('form-data-object');
或者使用 ES6 模块:
import FormData from 'form-data-object';
基本使用
创建一个空的 FormData
对象:
const formData = new FormData();
添加文本字段:
formData.append('username', 'john');
添加文件字段:
formData.appendFile('avatar', '/path/to/avatar.jpg');
添加多个文件:
formData.appendFiles('photos', [ '/path/to/photo1.jpg', '/path/to/photo2.jpg' ]);
可以指定文件名:
formData.appendFile('resume', '/path/to/resume.pdf', 'my-resume.pdf');
可以指定请求头:
formData.headers['custom-header'] = 'custom-value';
将 FormData
对象作为请求体发送:
fetch('/api/form', { method: 'POST', body: formData, headers: formData.getHeaders() }).then(response => { console.log(response); });
进阶使用
对象字段
FormData
支持添加对象字段:
formData.append('user', { name: 'john', email: 'john@example.com' });
这样发送请求时,会将 user
字段解析成以下内容:
user[name]=john user[email]=john@example.com
媒体类型
可以指定文件的媒体类型:
formData.appendFile('avatar', '/path/to/avatar.jpg', { contentType: 'image/jpeg' });
编码方式
可以指定编码方式:
formData.append('username', 'john', { charset: 'utf-8' });
流式上传
当上传大文件时,我们可以使用流式上传,避免将整个文件读入内存:
const fs = require('fs'); const fileStream = fs.createReadStream('/path/to/bigfile'); formData.append('file', fileStream);
总结
form-data-object
是一个方便使用的 FormData
封装工具,它支持添加文本字段、文件字段、对象字段等,还支持指定文件名、媒体类型、编码方式、流式上传等。使用 form-data-object
可以帮助我们更加方便地向后端服务器上传表单数据,进一步提高前端开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055eb981e8991b448dc6cd