Node.js使用授权下载图像

时间:2018-06-07 20:37:16

标签: javascript node.js

我正在尝试调整可以下载图像的代码,以便能够从标题中需要授权的网站下载图像。这是我试图改编的代码:

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来解决这个问题。

0 个答案:

没有答案