服务 tar.gz 文件并在 nodejs 上下载它
Serving tar.gz file and download it on nodejs
我在 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();
似乎保存文件成功,但我无法提取它。
我通过如下创建流解决了这个问题。
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();
为什么不使用 application/gzip 内容类型?我相信你的问题出自那里。
我在 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();
似乎保存文件成功,但我无法提取它。
我通过如下创建流解决了这个问题。
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();
为什么不使用 application/gzip 内容类型?我相信你的问题出自那里。