質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

2793閲覧

Node.js(express)+Dropbox API V2(JavaScript SDK)でファイルをダウンロードした場所について

ayk3

総合スコア10

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2018/10/15 02:43

編集2018/10/15 04:14

前提・実現したいこと

Node.js(express)でDropbox API V2(JavaScript SDK)を使用してDropboxからテキストファイルをダウンロード後、そのファイル内容を文字列として取得したいです。
そこでDropboxからファイルをダウンロードする関数を実行したのですが、実際にファイルがどこにダウンロードされているのか分からなくて困っています。

該当のソースコード

Node

1var express = require('express'); 2var router = express.Router(); 3 4//ログ出力結果パースモジュール 5require('isomorphic-fetch'); 6//Dropbox API V2 モジュール 7var Dropbox = require('dropbox').Dropbox; 8//Dropbox APIのMyAppのGenerated access tokenで作成したものを使用 9var dbx = new Dropbox({ accessToken: 'トークン' }); 10 11//指定のファイルをダウンロード 12dbx.filesDownload({path: '/API_test/test.txt'}) 13.then(function(response) { 14 console.log(response); 15}) 16.catch(function(error) { 17 console.log(error); 18}); 19 20router.get('/', function(req, res, next) { 21 res.render('dbapi', { title: 'テスト' }); 22}); 23 24module.exports = router;

試したこと

・Dropbox API V2公式SDK(JavaScript SDK)をnpmでインストール
・ファイルをダウンロードするSDKのfilesDownload関数をNode.jsで実行後、コマンドプロンプトで下記のような結果が返ってきます。
(関数の実行は成功している?)
※セキュリティに関係しそうな個所は一部改編してます

npm

1{ name: 'test.txt', 2 path_lower: '/api_test/test.txt', 3 path_display: '/API_test/test.txt', 4 id: 'id:~~~', 5 client_modified: '2018-10-12T07:21:34Z', 6 server_modified: '2018-10-12T07:21:34Z', 7 rev: '~~~', 8 size: 3, 9 content_hash: 10 '~~~', 11 fileBinary: ~~~ }

補足情報(FW/ツールのバージョンなど)

【使用ツールやモジュールのバージョン】
npm:4.0.5
Node.js:10.12.0
express:4.16.4
dropbox(Javascript SDK):4.0.12

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。
どこかのフォルダにファイル自体がダウンロードされるのかとずっと思っていたのですが(ファイルを保存して「ダウンロード」フォルダに入るイメージ)、あくまでもバッファとして保存されるのですね…。
下記のように修正すると、きちんとファイルの内容が文字列として取得できました。

node

1var express = require('express'); 2var router = express.Router(); 3 4//ログ出力結果パースモジュール 5require('isomorphic-fetch'); 6//Dropbox API V2 モジュール 7var Dropbox = require('dropbox').Dropbox; 8//Dropbox APIのMyAppのGenerated access tokenで作成したものを使用 9var dbx = new Dropbox({ accessToken: 'トークン' }); 10 11//指定のファイルをダウンロード 12dbx.filesDownload({path: '/API_test/test.txt'}) 13.then(function(response) { 14 //★ここから修正 15 //バッファ(fileBinary)を取得 16 var buf = response.fileBinary; 17 //バッファから文字列(utf8)に変換 18 var str = buf.toString('utf-8'); 19 //ファイルの内容を出力 20 console.log( str ); 21 //★ここまで修正 22}) 23.catch(function(error) { 24 console.log(error); 25}); 26 27router.get('/', function(req, res, next) { 28 res.render('dbapi', { title: 'テスト' }); 29}); 30 31module.exports = router;

投稿2018/10/19 07:54

ayk3

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問