为了账号安全,请及时绑定邮箱和手机立即绑定

NodeJS如何发送buffer类型的数据

NodeJS如何发送buffer类型的数据

凤凰求蛊 2019-03-14 18:13:42
需求:整个需求可以抽象为Node.js通过readSteam读取二进制文件并通过post将其发送到后端服务器存储到mongodb中。目前的问题:通过createReadStream创建的读流中读取数据,返回的为chunk类型的数据,通过Node.js中的post上传时,数据丢失。代码如下:/** * Created by Administrator on 2018/4/29. */var fs = require('fs');var http = require("http");var queryString = require("querystring")var filepath = "./mmp.txt";var readSteam = fs.createReadStream(filepath);readSteam.on("data",(chunk) => {    console.log(chunk);    let mydata = {"name":filepath, data: chunk};    console.log(123)    console.log(mydata);    doapost(mydata);})function  doapost(data) {    let contents = queryString.stringify(data);    console.log("here");    console.log(contents);    let options = {        host: "localhost",        path: "/mytestpost/",        port: 8000,        method: 'POST',        headers: {            'Content-Type': 'application/x-www-form-urlencoded',            'Content-Length': contents.length        }    };    let req = http.request(options, function (res) {        res.on("data", function (chunk) {            console.log(chunk.toString())        });        res.on("end", function (d) {            console.log("end")        });        res.on("error", function (e) {            console.log(e);        })    });    req.write(contents);    req.end();}运行结果如下:可以看到上传的时候name=.%2Fmmp.txt&data=处buffer数据丢失了,请问各位码友该如何解决?
查看完整描述

1 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

这是你querystring模块用的不对
let contents = queryString.stringify(data); 
Buffer类型的数据序列化没了
文档是这样说的:
如果 obj 对象中的属性的类型为 <string> | <number> | <boolean> | <string[]> | <number[]> | <boolean[]>,则属性的值会被序列化。 其他类型的属性的值会被强制转换为空字符串。

查看完整回答
反对 回复 2019-03-29
  • 1 回答
  • 0 关注
  • 380 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信