2017-05-02 3 views
0

私はWebアプリケーションに取り組んでいましたが、ユーザーのシステムにログインしてからファイルをアップロードする機能がありました。これらのアップロードされたファイルを整理して安全な方法で保存するために自分のDropboxアカウントを使用できる方法があるかどうかは疑問でした。後でこれらのファイルを取得したいので、アップロードが完了した時点でリンクを別のデータベースに保存する必要があります。 私は、Ubuntuでnode.js/JavaScript環境に取り組んでおり、Heroku上でアプリケーションをホストしています。Dropbox API v2を使用して、Webアプリケーションでクラウドストレージを実装することはできますか?

廃止予定のDatastore APIには同様の機能がありましたが、API V2でこれを実装する方法はありますか?

答えて

0

Dropbox APIは、他の操作の中でファイルをアップロードしたりダウンロードしたりする機能を備えているため、これは確かに可能です。各ユーザーがあろうとのDropbox APIを意図して設計されたことをけれどもそれは注意することが重要です

https://www.dropbox.com/developers

:あなたはここにドキュメント、チュートリアル、およびSDKを含む、あなたがのDropbox APIを始めるために必要なすべてを、見つけることができます自分のDropboxアカウントをリンクして、自分のファイルと対話します。ただし、技術的には1つのアカウントに接続することは可能です。 SDKは明示的なサポートを提供していないため、さまざまな技術的およびセキュリティ上の理由から、SDKの使用をお勧めしません。しかし、アクセストークンを秘密にしておくことができるサーバー側のアプリケーションでは、これらの懸案事項のほとんどが償却されています。

このルートに移動する場合は、承認フローを開始する代わりに、アカウントとアプリに既存のアクセストークンを手動で使用します。 (ちょうどhttps://www.dropbox.com/account/securityなどを介し、それを取り消すしないように注意してください)

+0

私はあなたが言ったようにサーバー側のアプリケーションになるので、そのように実装することは大丈夫です。したがって、次の手順を実行すると正しいですか? 1.ユーザーのPC上のファイルのパスを取得するためのフォームを作成します。 ; 2. APIコールを送信して、DropBoxクラウドの特定の場所に格納します。 ; 3.格納されたファイルの一意のIDを取得し、それを別のデータベースに格納します。 –

+0

サーバー側のアプリケーションにとっては安全ですが、意図した用途ではないため、まだ推奨できません。それは、あなたが言うように、それがうまくいくかのように聞こえる。 – Greg

0

あなたはすぐに私の小さなDropboxのv2のAPIのラッパー(dropbox-v2-api)を使用して、/ダウンロードファイルをアップロードすることができます。

アップロード例:

const dropboxUploadStream = dropbox({ 
    resource: 'files/upload', 
    parameters: { 
     path: '/dropbox/path/to/file.js' 
    } 
}, (err, result) => { 
    //upload completed 
}); 

fs.createReadStream('path/to/file.js').pipe(dropboxUploadStream); 

をダウンロード例:

dropbox({ 
    resource: 'files/download', 
    parameters: { 
     path: '/dropbox/image.jpg' 
    } 
}, (err, result) => { 
    //download completed 
}) 
.pipe(fs.createWriteStream('./image.jpg')); 

どちらの組み合わせ:

const downloadStream = dropbox({ 
    resource: 'files/download', 
    parameters: { path: '/source/file/path' }    
}); 

const uploadStream = dropbox({ 
    resource: 'files/upload', 
    parameters: { path: '/target/file/path' }    
}, (err, response) => { 
    //upload finished 
}); 

downloadStream.pipe(uploadStream); 
関連する問題