我需要使用Node获取大型文件的Content-Length
和Content-Type
标头。
很遗憾,我处理的服务器不允许HEAD
次请求,而且文件太大而无法发出整个GET
请求。
我正在寻找类似这个python代码的东西:
import requests
r = requests.get(url, stream=True)
content_length = r.headers['Content-Length']
content_type = r.headers['Content-Type']
stream=True
参数表示该文件无法完全下载。
答案 0 :(得分:1)
如果您使用的是request
软件包,则可以执行以下操作:
const request = require('request');
const r = request(url);
r.on('response', response => {
const contentLength = response.headers['content-length'];
const contentType = response.headers['content-type'];
// ...
r.abort();
});
答案 1 :(得分:1)
nodejs的http库默认情况下不会获取所有内容,但会给回调包含IncomingMessage对象,以构建您必须收听的完整响应.on('data')。
看看:
https://nodejs.org/api/http.html#http_http_get_options_callback
如果您想“忽略”传入的数据,可以调用res.abort()。调用此方法将导致响应中的剩余数据被删除并且套接字将被销毁。
答案 2 :(得分:-1)
method: 'HEAD'
:http.request('http://example.com', {
method: 'HEAD',
}, res => {
console.log(res.statusCode, res.statusMessage)
console.log(res.headers)
res.on('data', _ => {
console.log(`IT SHOULDN'T REACH HERE!`)
})
}).on('error', console.error)
.end()