iOS开发

node 接收、发送 form-data 数据

2018-10-17  本文已影响0人  ahappyone

一、背景: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

上一篇 下一篇

猜你喜欢

热点阅读