2017-02-13 29 views
0

私は、ログイン認証を要求しない公開共有URLを指定してファイルをダウンロードするNodeJSアプリケーションを作成しています。 私は開発者セクション内でアプリを作成し、適切なトークンを生成しました。box-node-sdk共有公開ファイルのダウンロード

gitのドキュメントでは、ファイルをダウンロードするためにこのメソッドを使用する必要があります。最初のパラメータはfileIdですが、私はこのIDがどこにあるのか、どこで見つかったのかは書かれていません。

Error: Unexpected API Response [404 Not Found] (not_found: "Not Found") 
    at Object.module.exports.buildResponseError (/home/andrea/dev/node/box_api/node_modules/box-node-sdk/lib/util/errors.js:57:23) 
    at Object.module.exports.buildUnexpectedResponseError (/home/andrea/dev/node/box_api/node_modules/box-node-sdk/lib/util/errors.js:94:15) 
    at /home/andrea/dev/node/box_api/node_modules/box-node-sdk/lib/managers/files.js:148:20 
    at BoxClient._handleResponse (/home/andrea/dev/node/box_api/node_modules/box-node-sdk/lib/box-client.js:291:2) 
    at handleResponseCallback (/home/andrea/dev/node/box_api/node_modules/box-node-sdk/lib/box-client.js:233:9) 
    at /home/andrea/dev/node/box_api/node_modules/box-node-sdk/lib/api-request.js:285:3 
    at nextTickCallbackWith0Args (node.js:436:9) 
    at process._tickCallback (node.js:365:13) 

誰もがプログラム的に私を助けることができます:私は、私はこのエラーを取得し、このコード

var fs  = require('fs'), 
    BoxSDK = require('box-node-sdk'), 
    sdk  = new BoxSDK({ 
     clientID: '...', 
     clientSecret: '...' 
    }), 
    client = sdk.getAnonymousClient(), 

    file_id = process.argv[2].replace(/\S*\/(\S+)$/,"$1"); 

client.files.getReadStream(file_id, null, function(error, stream) 
{ 
    if (error) { 
     throw error; 
    } 

    // write the file to disk 
    var output = fs.createWriteStream('./output/'+file_id+".zip"); //I know for sure there will only be zip files 
    stream.pipe(output); 
}); 

しかし、このコマンドで

nodejs index.js https://adrime.box.com/s/s5w7lzm4xfifmxrod9r7eeniv9nhtenk 

を、それを実行してみました https://rawgit.com/box/box-node-sdk/master/docs/jsdoc/Files.html#getReadStream

box.comからパブリック共有ファイルをダウンロードしますか?

ありがとうございます!

答えて

0

私はこの解決策を見つけました。

私にはかなりうまくいきます。他の人にも役立つことを願っています。

var fs   = require("fs"), 
    request = require("request"); 

function downloadFile(source, target, callback) 
{ 
    var wr = fs.createWriteStream(target); 

    wr.on("error", function (err) 
    { 
     callback(err); 
    }); 

    wr.on("close", function (ex) 
    { 
     callback(); 
    }); 

    request 
     .get(source) 
     .on("error",function(err) 
     { 
      callback(err); 
     }) 
     .on('response', function(response) 
     { 
      if((""+response.statusCode).charAt(0) != "2") 
       callback({ 
         msg: "File not found: "+response.request.href, 
         path: response.request.href, 
         toString: function(){ 
          return this.msg; 
         } 
        }); 
     }) 
     .on("end", function (ex) 
     { 
      console.log("request ended"); 
     }) 
    .pipe(wr); 
} 

function onDownloadComplete(err) 
{ 
    if(err) 
     throw err; 

    console.log("DOWNLOAD COMPLETE"); 
} 

function init() 
{ 
    var static_url = process.argv[2].replace(/\/s\//,"/shared/static/") + ".zip"; 
    console.log(static_url); 

    downloadFile(static_url, "./output/template.zip", onDownloadComplete); 
} 

init(); 
関連する問題