0

私は CouchDB を初めて使用し、最近、Express を使用してダウンロード ポータルを作成しています。許可されたユーザーのみがダウンロードできるようにしたいので、次のように app.js でチェック手順を作成します (express を使用):

app.get("/download/:id/:file", function (req, res) {
   var filename = req.params.file;
   var docI= req.params.id;
   if(userHasPrivileges()){
       db.getAttachment(publicationID, filename, function(err, reply){
           // WHAT SHOULD I DO HERE ?
       })
   }
}

問題は、ファイルをユーザーに直接送信するために cradle.io ( https://github.com/cloudhead/cradle#creatingupdating-documents ) を作成できないことです。権限のないユーザーがファイルをダウンロードできるようになるため、データベースからの直接リンクは使用したくありません。問題は、 getAttachment() メソッドから取得したばかりのファイルをユーザーのブラウザに送信する方法がよくわかりません。

助けてくれてありがとう

4

1 に答える 1

3

したがって、そのストリームを http 応答オブジェクトにパイプできますdb.getAttachmentStream

getAttachment().pipe(httpResponseObject)  

完全なコード:

app.get("/download/:id/:file", function (req, res) {
   var filename = req.params.file;
   var docI= req.params.id;
   if(userHasPrivileges()){
       res.attachment(filename);
       db.getAttachment(publicationID, filename, function(err){ }).pipe(res);
   }
}

添付ファイルが大きな画像、mp3、動画などの大きなデータである場合は、範囲ダウンロードをサポートする必要があります。ヘッダーの範囲により、ブラウザーは必要な部分をダウンロード/再ダウンロードできる場合があります。

Nodejs - HTTP 範囲のサポート / 部分的なファイルのダウンロード

于 2014-01-01T11:31:49.560 に答える