質問: router; ``` ### 試したこと ・Dropbox API V2公式SDK(JavaScript SDK)をnpmでインストール ・ファイルをダウンロードするSDKのfilesDownload関数をNode.jsで実行後、コマンドプロンプトで下記のような結果が返ってきます。 (関数の実行は成功している?) ※セキュリティに関係しそうな個所は一部改編してます ``` { name: 'test.txt', path_lower: '/api_test/test.txt', path_display: '/API_test/test.txt', id: 'id:~~~', client_modified: '2018-10-12T07:21:34Z', server_modified: '2018-10-12T07:21:34Z', rev: '~~~', size: 3, content_hash: '~~~', fileBinary: ~~~ } ``` ### 補足情報(FW/ツールのバージョンなど) 【使用ツールやモジュールのバージョン】 npm:4.0.5 Node.js:10.12.0 express:4.16.4 dropbox(Javascript SDK):4.0.12 よろしくお願いします。
回答: 自己解決しました。 どこかのフォルダにファイル自体がダウンロードされるのかとずっと思っていたのですが(ファイルを保存して「ダウンロード」フォルダに入るイメージ)、あくまでもバッファとして保存されるのですね...。 下記のように修正すると、きちんとファイルの内容が文字列として取得できました。 ``` var express = require('express'); var router = express.Router(); //ログ出力結果パースモジュール require('isomorphic-fetch'); //Dropbox API V2 モジュール var Dropbox = require('dropbox').Dropbox; //Dropbox APIのMyAppのGenerated access tokenで作成したものを使用 var dbx = new Dropbox({ accessToken: 'トークン' }); //指定のファイルをダウンロード dbx.filesDownload({path: '/API_test/test.txt'}) .then(function(response) { //★ここから修正 //バッファ(fileBinary)を取得 var buf = response.fileBinary; //バッファから文字列(utf8)に変換 var str = buf.toString('utf-8'); //ファイルの内容を出力 console.log( str ); //★ここまで修正 }) .catch(function(error) { console.log(error); }); router.get('/', function(req, res, next) { res.render('dbapi', { title: 'テスト' }); }); module.exports = router; ```