2016-05-15 1 views
1

У меня есть tar.gz файл на сервере nodejs. Я хочу, чтобы он был загружен из другого приложения nodejs. Я могу сделать это с помощью txt, jpeg и т. Д. Но никакого успеха с tar.gz. Когда я загружаю файл tar.gz, на клиенте кажется пустым.Слушать tar.gz файл и загружать его на nodejs

Это упрощенный основной сервер, который я использовал

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(); 

Кажется успешно сохранения файла, но я не могу извлечь его.

ответ

0

Я решил это, создав поток, как показано ниже.

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();