Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript http resquest中的多个数据包_Javascript_Node.js - Fatal编程技术网

Javascript http resquest中的多个数据包

Javascript http resquest中的多个数据包,javascript,node.js,Javascript,Node.js,我对javascript中的http.request有问题。我在网上收到多个包裹。(“数据”)。我明白这是因为我收到的包裹太大(图)。后来我传递了一个.toString('base64') 问题是如何加入不同的包以将它们传递给.toString('base64')。实际上,我试图将所有内容都放在一个字符串中,但是.toString('base64')返回一些我以后无法处理的内容 var file = req.body.file; var post_options = { host: "l

我对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});
    });
});

因为您的数据是二进制的,而不是字符串,所以它是一个缓冲区。无法使用+添加缓冲区

将它们放在一个数组中,在
.on('data')
块上放置
.push()
,并在
.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});
    });
});

因为您的数据是二进制的,而不是字符串,所以它是一个缓冲区。无法使用+添加缓冲区

将它们放在一个数组中,在
.on('data')
块上放置
.push()
,并在
.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});
    });
});
似乎等于似乎等于