Thx for the suggestion, a simple <a ng-href="{{file}}" target="_self"></A> did
the job without even touching the headers.
Il giorno lunedì 14 aprile 2014 19:00:52 UTC+2, [email protected] ha
scritto:
>
> I think you are making this too complicated. All you should need to do is
> to create a link to the file (place the URL you're using in the AJAX
> request in the href of the link instead) and then have your Express code
> "strongly encourage" the client to download the file rather than display
> it. Take a look at
> https://stackoverflow.com/questions/10615797/utility-of-http-header-content-type-application-force-download-for-mobilefor
> some information. Basically, add the Content-Disposition:
> attachment; etc etc header to the response with the file. Don't forget
> that just because a user can't see a link, that doesn't mean they can't
> access a URL. This means that you need to validate on the server side that
> they are authorized to access the file even if they were able to ping the
> URL.
>
> On Monday, April 14, 2014 9:14:51 AM UTC-6, Smart Cris wrote:
>>
>>
>> This time I got bad luck with Stack Overflow, you guys are my last
>> resource, and pls be kind with a newbie. Here is the trouble: in my MEAN
>> application I need to provide a link to download a file (tif image), the
>> link must be hidden and not accessible by unauthorized users. So I came up
>> with the idea of keeping the files inside the server directory and let
>> Angular.js send with ng-click="download()" an $HTTP request to
>> express.js with the file ID to download. Here is my code that doesn't work,
>> there are no errors whatsoever, but I can't even get the download dialog
>> box to open:
>>
>> Client Side:
>>
>> $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/tif;charset=utf-8,' + encodeURI(data),
>> target: '_self',
>> download:'test.tif'
>> })[0].click();
>> }).
>> error(function(data, status, headers, config) {
>> });
>> }
>>
>> Template:
>>
>> <a ng-href="#" target="_self" type="button" class="btn"
>> ng-click="download()">Download</a>
>>
>> Server Side
>>
>> 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();
>> }
>> });
>> });})
>>
>>
>>
--
You received this message because you are subscribed to the Google Groups
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.