저는 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 () 메서드에서 가져온 파일을 사용자의 브라우저로 보내는 방법을 모르겠습니다.
도움을위한 Thx
couchdb에서를 db.getAttachment
반환 Stream
하므로 해당 스트림을 http 응답 객체로 파이프 할 수 있습니다.
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 또는 비디오와 같은 빅 데이터 인 경우 범위 다운로드를 지원해야합니다. 헤더의 범위는 브라우저가 필요한 부분을 다운로드 / 다시 다운로드하도록 허용 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다