我正在尝试调整可以下载图像的代码,以便能够从标题中需要授权的网站下载图像。这是我试图改编的代码:
var options = {
host: 'subdomain',
//uri: 'full url,
//uri: 'https://upload.wikimedia.org/wikipedia/commons/5/51/Google.png',
port: 80,
path: "/secure/attachment/" + req.params.attachmentFileName,
//method: 'GET',
headers: {
Authorization: "Basic " + new Buffer(jiraUsername + ":" + jiraPassword, "utf8").toString("base64")
}
};
var download = function(uri, filename, callback){
request.head(uri, function(err, res, body){
console.log("Res", res);
console.log('content-type:', res.headers['content-type']);
console.log('content-length:', res.headers['content-length']);
request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);
});
//http.request(options).pipe(fs.createWriteStream(filename)).on('close', callback);
};
download(options, appDir+file, function(){
console.log('done');
res.sendFile(appDir+file);
});
当我在选项中包含uri
时,代码会进入无限循环检查res.headers
。如果我不包含它,我会收到错误Cannot read property 'headers' of undefined
。我无法找到request.head
的任何文档,因此我不确定我是否正确使用它。
理想情况下,这与我想要使用的download()
相似:
var download = function(options, filename, callback){
request(options).pipe(fs.createWriteStream(filename)).on('close', callback);
但是当我使用它时,我得到options.uri is a required argument
。我可以通过在选项中定义uri来解决这个问题。