javascript - http resquest中的多个数据包
问题描述
我在 javascript 中遇到了 http.request 的问题。我收到了多个包裹。('数据')。我知道这是因为我收到的包裹太大(图片)。后来我传递了一个 .toString('base64')。
问题是如何加入不同的包以将它们传递给 .toString ('base64')。实际上,我正在尝试将所有内容都放在一个字符串中,但是 .toString ('base64') 会返回一些我以后无法使用的东西。
var file = req.body.file;
var post_options = {
host: "localhost",
port: 80,
path: '/api/v1/files/' +file,
method: 'GET',
headers: {
'Authorization': 'Bearer '+ BackendToken.access_token
}
};
var httpg = require('http');
var resultComb ='';
var post_req = httpg.request(post_options, function(res2) {
res2.on('data', function (chunk) {
resultComb += chunk
});
res2.on('end', function(){
var extension = file.split(".").pop()
var src = ''
switch (extension.toLowerCase()) {
case "mp4":
src = 'data:video/mp4;base64,'
break
case "jpg":
case "jpeg":
case "png":
src = 'data:image/png;base64,'
break
case "pdf":
src = 'data:application/pdf;base64,'
break
}
src += resultComb.toString('base64')
res.json({src:src});
});
});
解决方案
由于您的数据是二进制而不是字符串,因此是缓冲区。缓冲区不能用 + 添加。
将它们与块放在一个数组中,.push()
并将它们与.on('data')
块连接起来。然后转换合并的缓冲区。Buffer.concat()
.on('end')
会是这样的:
var file = req.body.file;
var post_options = {
host: "localhost",
port: 80,
path: '/api/v1/files/' +file,
method: 'GET',
headers: {
'Authorization': 'Bearer '+ BackendToken.access_token
}
};
var httpg = require('http');
var resultComb = [];
var post_req = httpg.request(post_options, function(res2) {
res2.on('data', function (chunk) {
resultComb.push(chunk);
});
res2.on('end', function(){
var extension = file.split(".").pop()
var src = ''
switch (extension.toLowerCase()) {
case "mp4":
src = 'data:video/mp4;base64,'
break
case "jpg":
case "jpeg":
case "png":
src = 'data:image/png;base64,'
break
case "pdf":
src = 'data:application/pdf;base64,'
break
}
src += Buffer.concat(resultComb).toString('base64')
res.json({src:src});
});
});
推荐阅读
- java - 带有GSON和多个元素的Java中的HttpRequest
- rust - 如何在 gtk 应用程序中处理命令行参数?
- javascript - 具有本地服务器和 webpack 开发模式的不同端口以及“字符串与预期模式错误不匹配”
- python - anaconda3 Jupiter 中的 TensorFlow lib 看不到我的 GPU NVIDIA GeForce MX 150
- python - 放置 unicode 时居中文本和错误(枕头)
- reactjs - Leaflet 路由机 + Ionic 框架
- c++ - 这两个给出的例子有什么区别
- hive - Hive 中的错误,列名作为应用程序'
- file-io - 文件 I/O 中的分段错误,无法确定
- java - 如何使用 jax-rs 发送 x-www-form-url-encoded 请求?