介绍
form-data 是一个处理表单数据的 Node.js 模块,它使得在 Node.js 中发送 HTTP 请求并上传文件变得非常容易。该模块提供了一个 FormData 类,可以将表单数据与文件内容编码为 multipart/form-data 数据流,并将其发送到服务器。
安装
使用 npm 安装 form-data:
npm install form-data
使用
基本用法
要使用 form-data,需要先创建一个新的实例,然后向其中添加表单字段和文件。最后,将 form-data 实例传递给请求库(如 axios
或 request
)的 data
选项。
下面是一个示例,演示如何使用 form-data 向服务器上传一个文本字段和一个文件:
-- -------------------- ---- ------- ----- -------- - --------------------- ----- ----- - ----------------- ----- ---- - --- ----------- ----------------------- ----- ------ --------------------- -------------------------------------------- --------------------------------------- ----- - -------- ------------------ ------------------ -- - --------------------------- ---
在上面的示例中,我们首先创建了一个 FormData
实例,并向其中添加了一个名为 username
的文本字段和一个名为 avatar
的文件字段。然后,我们使用 axios
发送一个 POST 请求,并将 form-data
实例传递给请求数据 (data
) 选项。此外,我们还需要设置请求头(headers
),以便告诉服务器我们正在发送的是一个 multipart/form-data
数据流。
添加文本字段
要添加一个文本字段,可以使用 append
方法:
form.append('username', 'John Doe');
其中,第一个参数是字段名称,第二个参数是字段值。
添加文件字段
要添加一个文件字段,可以使用 append
方法,并将文件的可读流传递给它:
form.append('avatar', fs.createReadStream('/path/to/avatar.jpg'));
在上面的示例中,我们使用 Node.js 的 fs
模块创建了一个可读流,然后将其传递给 append
方法。如果你想上传多个文件,可以多次调用 append
方法。
获取请求头
为了正确地向服务器发送 multipart/form-data
数据,还需要设置请求头。可以使用 getHeaders
方法来获取所有必需的请求头:
const headers = form.getHeaders();
然后,你可以将这些请求头传递给请求库的 headers
选项。
总结
通过使用 form-data,我们可以轻松地在 Node.js 中向服务器上传表单数据和文件。该模块提供了一个方便的 API,使得操作表单数据变得非常容易。无论是处理用户上传的头像,还是上传文件以进行测试,都可以使用 form-data 来完成任务。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/42807