【问题标题】:Serving tar.gz file and download it on nodejs提供 tar.gz 文件并将其下载到 nodejs
【发布时间】:2016-09-11 10:53:18
【问题描述】:

我在 nodejs 服务器上有 tar.gz 文件。我希望它可以从另一个 nodejs 应用程序下载。我可以用 txt、jpeg 等来做到这一点……但 tar.gz 没有成功。当我下载 tar.gz 文件时,客户端上似乎是空的。

这是我使用的简化的基本服务器

var http = require('http');

http.createServer(function(request, response){

fs.readFile(__dirname + "/update/test.tar.gz", (err, data) => {
     if (err) {

     } else {

         response.setHeader('Content-Type', 'application/x-gzip');
         response.end(data);
     }
});

这是尝试下载的客户端

var postData = {};

var options = {
    protocol : "http:",
    host: "localhost",
    port: 3010,
    path: '/GetFile',
    method: 'POST',
    headers: {
        'Content-Type': 'application/octet-stream',
        'Content-Length': Buffer.byteLength(postData)
    }
};

var req = http.request(options, function(res) {

    var body = '';

    res.on('data', function (chunk) {

        body += chunk;
    });

    res.on('end', function(){

        fs.writeFile("./test4.tar.gz", body, function(err) {

        });


    });
});

req.write(postData);
req.end();

保存文件好像成功了,但是解压不了。

【问题讨论】:

    标签: javascript node.js fileserver


    【解决方案1】:

    为什么不使用 application/gzip 内容类型?我相信您的问题来自那里。

    【讨论】:

    【解决方案2】:

    我通过如下创建流解决了它。

    var req = http.request(options, function(res) {
    
        var body = '';
        var file = fs.createWriteStream('./test4.tar.gz');
    
        res.on('data', function(chunk){
            file.write(chunk);
            }).on('end', function(){
              file.end();
            });
        });
    
    req.write(postData);
    req.end();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 2013-03-25
      • 1970-01-01
      相关资源
      最近更新 更多