node 接收、发送 form-data 数据

一、背景:node 作为中间层服务转发数据,接收客户端图片,并传至其他服务器。(基于 koa2 框架、node-fetch)

二、转发前端传过来的包含图片的 form-data 数据:

(1)解析:用  koa2-multiparty 中间件解析客户端传过来的 form-data(注意:只对上传文件的接口使用该中间件,文件会存在本地磁盘,用完可清空,详情见 文档)。文件从 ctx.req.files 取,其他参数从 ctx.req.body 取。文件数据会缓存在本地磁盘。

(2)封装:将数据封装成 form-data 。先从本地读取缓存文件:const file = fs.createReadStream(tempPath) (tempPath 从 ctx.req.files 中取出。再依次封装,代码如下:

    const FormData = require('form-data');

    const form = new FormData();

    form.append('a', 1);

    form.append('file', file);

(3)发送:

    const fetch = require('node-fetch');

    fetch(url, {

            headers: form.getHeaders(), // getHeaders() 返回带 boundary 的 content-type,实验时,必须带上该 bound 后端才能解析

            method: 'POST',

            body: form

    })

参考文档:

https://github.com/request/request#forms

https://github.com/form-data/form-data

https://github.com/bitinn/node-fetch#post-with-form-data-detect-multipart

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。