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

为什么在终端可以看到base64编码后的数据 , 但浏览器只显示空白的图片. 求指点

为什么在终端可以看到base64编码后的数据 , 但浏览器只显示空白的图片. 求指点

开心每一天1111 2023-04-09 14:10:42
现在需要这样一个功能: 通过 GET 参数 "url" , 读取图片并显示图片我现在的代码是:var http = require('http');var url  = require('url'); http.createServer(function (req, res) {    var params = url.parse( req.url , true );    var IMGS = new imageServer( http , url);     IMGS.http( params.query.url  , function( data ){      res.writeHead(200, {"Content-Type": data.type});       var img = new Buffer(data.base64, 'base64').toString('binary');        console.log(data.base64);      res.end( img );     }); }).listen(8124);var imageServer = function( http , url ){ var _url  = url; var _http = http; this.http = function(url , callback , method){ method      = method || 'GET'; callback    = callback || function(){}; var urlData = _url.parse(url); var request = _http.createClient(80 , urlData.host).                     request(method, urlData.pathname, {"host": urlData.host}); request.end(); request.on('response', function (response) { var type = response.headers["content-type"],     body = "";     response.setEncoding('binary');     response.on('end', function () {         var base64 = new Buffer(body, 'binary').toString('base64');         var data = {          type   : type ,          base64 : base64          };         callback(data);              });     response.on('data', function (chunk) {         if (response.statusCode == 200) body += chunk;     }); }); }; };
查看完整描述

2 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

如下所示

//不能为 res.end(); 输出二进制数据

更改后的代码为:

var http = require('http');var url = require('url');
http.createServer(function(req, res) {    var params = url.parse(req.url, true);    var IMGS = new imageServer(http, url);

    IMGS.http(params.query.url, function(data) {
        res.writeHead(200, {"Content-Type": data.type});
        res.write(data.body, "binary");
        res.end();
    });

}).listen(8124);var imageServer = function(http, url) {    var _url = url;    var _http = http;    this.http = function(url, callback, method) {
        method = method || 'GET';
        callback = callback ||        function() {};        var urlData = _url.parse(url);        var request = _http.createClient(80, urlData.host).
        request(method, urlData.pathname, {            "host": urlData.host
        });

        request.end();

        request.on('response', function(response) {            var type = response.headers["content-type"],
                body = "";
            response.setEncoding('binary');
            response.on('end', function() {                var data = {                    type: type,                    body: body
                };
                callback(data);

            });
            response.on('data', function(chunk) {                if (response.statusCode == 200) body += chunk;
            });
        });

    };
};


查看完整回答
反对 回复 2023-04-11
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

npm install request
var request = require('request');var fs = require('fs');
request('http://abc.com/abc.png').pipe(fs.createWriteStream('abc.png'));

abc.png 这样就被下载到你本地了。


查看完整回答
反对 回复 2023-04-11
  • 2 回答
  • 0 关注
  • 253 浏览

添加回答

举报

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