2016-04-05 17 views
0

私はノードでとても新しいので、私に同行してください。私は外部サーバーから一連の画像をダウンロードしようとしています。これまでのところ、私は限られた範囲でそれを働かせることができました。以下のコードを実行すると、画像の約半分しかWebページに表示されません。私はこれを正しくやっていないことを知っていて、いくつかの指針を探しています。ここに私がこれまで持っていたコードがあります。node.js httpリクエストのリストからサーバーに画像をダウンロードします

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から画像をダウンロードしようとしていることです。

答えて

0

ちょうど非同期モジュール

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") 
       } 
      } 
     ) 
を使用してそれを考え出しました
関連する問題