2017-08-02 13 views
0

私はdropbox APIを使用してファイルをdropboxにアップロードし、次に共有可能なリンクを生成してそれらをユーザーに送信します。Dropbox API - Force直接ダウンロード

しかし、問題は、ドロップボックス共有リンク経由でプレビューではなくファイルを強制的にダウンロードしたいということです。

?dl=0

コードで戻ってくる私はリンクの終わりが、Dropboxのによって生成された共有可能なリンクで?dl=1を設定し、ダウンロードを強制することができます知っている:私はV1を使用しています

request.put('https://api-content.dropbox.com/1/files_put/auto/reports/' + req.body.Name +'.pdf', { 
       headers: { 
        Authorization: 'TOKEN', 
        'Content-Type': 'application/pdf' 
       }, 
       body: content 
      }, function optionalCallback(err, httpResponse, bodymsg) { 
       if (err) { 
        console.log(err); 
       } 
       else { 
        console.log("File uploaded to dropbox successfully!"); 
        fs.unlink(temp_dir + 'report.pdf', function(err) { 
         if (err) 
          throw err; 
         else { 
          console.log("file deleted from server!"); 
         } 
        }); 
        request.post('https://api.dropboxapi.com/1/shares/auto/reports/' + req.body.Name + '.pdf'+ '?short_url=false?dl=1', { 
         headers: { 
          Authorization: 'TOKEN' 
         } 
        }, function optionalCallback(err, httpResponse, bodymsg) { 
         if (err) { 
          console.log(err); 
         } 
         else { 
          console.log('Shared link 2 ' + JSON.parse(httpResponse.body).url); 
          res.json(JSON.parse(httpResponse.body).url); 
         } 
        }); 

       } 
     }); 

すぐに廃止されますが、今は使用する必要があります。

答えて

0

dl=1 URLパラメータを使用することは、これらのリンクでダウンロードを強制的に強制する正しい方法です。あなたはここにこれに関するより多くの情報を見つけることができます。

https://www.dropbox.com/help/desktop-web/force-download

を適切にこれを行うには、あなたはURLを解析するために、実際のURLパーサーを使用する必要があります。次に、すでにdlパラメータがある場合は、1に設定します。そうでない場合は、に設定されたdlパラメータを追加します。

0

ストリームを利用してダウンロードストリームをクライアントにリダイレクトするだけです。以下は、最小限のdropbox-v2-apiラッパーとhapijsルート設定を使用した例です:

{ 
    path: '/getFile', 
    method: 'GET', 
    handler: (request, response) => { 
     dropbox({ 
      resource: 'files/download', 
      parameters: { 
       path: '/dropbox/image.jpg' 
      } 
     }, (err, result) => { 
      //download completed 
     }).pipe(response); //piping file stream 
    } 
} 
関連する問題