我在处理此请求,但没有下载内容,也没有错误。此请求中我的错误在哪里?我必须添加什么才能获得响应?
'downloadArchive': async() =>
{
console.info( '] downloadArchive' );
// завантаження архіва
let archive_body = await fetch( 'https://geolite.maxmind.com/download/geoip/database/GeoLite2-City-CSV.zip',
{
method: 'GET',
headers:
{
'User-Agent' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
}
} );
return new Promise(
( resolve, reject ) =>
{
let archive_write_stream = fs.createWriteStream( config.archive.archive_path );
archive_write_stream
.on( 'error', ( err ) => reject( err ) )
.on( 'close', () => resolve() );
archive_body.body.pipe( archive_write_stream );
}
);
},
答案 0 :(得分:0)
您不能像这样在node.js中下载文件。提取文件后,您需要将其写入流中,以便浏览器可以下载它。
我不确定如何使用fetch
库来实现这一点,但是您可以像下面这样简单地使用request来实现此目的。
request('https://geolite.maxmind.com/download/geoip/database/GeoLite2-City-CSV.zip')
.pipe(fs.createWriteStream('GeoLite2-City-CSV.zip'))
.on('close', function () {
console.log('File written!');
});
更新: 您还可以使用以下功能下载文件。
async function download( url, name ) {
const res = await fetch(url);
await new Promise((resolve, reject) => {
const fileStream = fs.createWriteStream(name);
res.body.pipe(fileStream);
res.body.on("error", (err) => {
reject(err);
});
fileStream.on("finish", function() {
resolve();
});
});
}
download('https://geolite.maxmind.com/download/geoip/database/GeoLite2-City-CSV.zip', 'GeoLite2-City-CSV.zip')
答案 1 :(得分:0)
下载没有任何插件的文件:
var file = fs.createWriteStream("<Any File Name>.zip");
http.get("https://geolite.maxmind.com/download/geoip/database/GeoLite2-City-CSV.zip", function(response) {
response.pipe(file);
});