簡體   English   中英

node.js將圖像從http請求列表下載到服務器

[英]node.js download images to server from list of http requests

我在Node上很新,請耐心等待。 我正在嘗試從外部服務器下載一系列圖像。 到目前為止,我已經能夠使其在有限的基礎上運行。 當我運行以下代碼時,只有大約一半的圖像進入了網頁。 我知道我沒有正確執行此操作,並且正在尋找一些指導。 這是我到目前為止的代碼

var request = require("request"),
    fs = require("fs"),
    views = ['sitename1', 'sitename2', 'sitename3'...]
for (var view in views) {
    request({
        url: 'http://' + SERVERURL + '/api/2.2/sites/' + siteID + '/workbooks/' + views[view]['workbookID'] + '/views/' + views[view]['id'] + '/previewimage',
        headers: {
            'Content-Type': 'image/png',
            'X-Tableau-Auth': authToken
                }
            , encoding: 'binary'}).pipe(
                fs.createWriteStream('./public/images/thumbnails/' + SITE + '/views/' + views[view]['url'] + '.png'
            ))
        };

我想指出的是,這確實可以正確保存某些圖像。 我相信我缺少的是一個回調,以確保在移至列表中的下一項之前,文件已成功保存。 我不知道如何實現。

另一個簡短的說明(不重要)是,我正在嘗試使用REST API從Tableau Server下載圖像。

您所獲得的面孔大約是一半的圖像,這使我想知道您是否正在使用Tableau Online? 如果是這樣,則需要確保每個文檔都使用URI( http://onlinehelp.tableau.com/current/api/rest_api/en-us/help.htm#REST/rest_api_concepts_fundamentals.htm#tableau-online -uris )。

剛剛使用異步模塊弄清楚了

async.eachSeries(views, (function(view, callback) {
            var thumbPath = 'public/images/thumbnails/' + req.session.SITE + '/views/' + req.session.views[view]['url'] + '.png'
                request({
                    url: 'http://' + SERVERURL + '/api/2.2/sites/' + req.session.siteID
                        + '/workbooks/' + req.session.views[view]['workbookID'] + '/views/' + req.session.views[view]['id'] + '/previewimage',
                    headers: {
                        'Content-Type': 'image/png',
                        'X-Tableau-Auth': req.session.authToken
                    }
                    }).pipe(
                        upload(thumbPath));
                    callback()
            }),
            function(err){
                if(err){
                    console.log("a thumb failed to download")
                } else {
                    console.log("all thumbs downloaded")
                }
            }
        )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM