내 애플리케이션에서 파일을 다운로드하려면 링크를 제공해야하며, 링크는 숨겨져 있어야하며 권한이없는 사용자가 액세스 할 수 있어야합니다. 그래서 파일을 서버 디렉토리에 보관하는 아이디어를 생각해 냈습니다. Angular.js가 ng-click="download()"
으로 $ HTTP 요청을 보낼 파일 ID와 함께 express.js로 보내고, 사용자 ID/pwd로 보냅니다. 우선이 방법이 안전한 솔루션입니까? 둘째, 여기에 작동하지 않는 내 코드입니다,이 오류는 전혀 없지만, 난 다운로드 대화 상자가 열립니다 얻을 수 없습니다Express.js의 Angular.js에서 파일 다운로드
클라이언트 측
$scope.download=function(){
$http({method:'GET', url:'/download/'+image[0]['_id']}).
success(function(data, status, headers, config) {
var element = angular.element('<a/>');
element.attr({
href: 'data:attachment/csv;charset=utf-8,' + encodeURI(data),
target: '_blank',
download:'test.csv'
})[0].click();
}).
error(function(data, status, headers, config) {
});
}
서버 측
app.namespace('/download/:documentID*', function() {
app.all('/', function(req, res, next){
res.download('images/download/test.tif', 'test.tif', function(err){
if (err) {
} else {
next();
}
});
});
})
이것은 템플릿의 html 코드입니다 :'Download'은 정확하지 않습니까? – Cris69
@ Cris69 모르겠다. 나는 각도에 있지 않다. 기본적으로 그렇습니다. 그러나 당신은 아무것도하지 않을 것입니다. 'href'는 비어 있고 당신은 여전히 콜백을 호출하여 다운로드합니다. 당신은 ajax 호출을 제거하고'href'를 동적으로 재 작성 할 수 있습니다. 이거, 너를 가야 해. – nietonfir
당신은'$ http' 요청이 불필요한 것이고, 간단한 ''이면 충분합니다. – Cris69