Angularjs简单文件下载导致路由器重定向

标签 angularjs

HTML:

<a href="mysite.com/uploads/asd4a4d5a.pdf" download="foo.pdf">

上传获得唯一的文件名,而真实姓名保存在数据库中。我想实现一个简单的文件下载。但上面的代码重定向到/因为:

$routeProvider.otherwise({
    redirectTo: '/', 
    controller: MainController
});

我尝试过

$scope.download = function(resource){
    window.open(resource);
}

但这只是在新窗口中打开文件。

有什么想法可以实现任何文件类型的真正下载吗?

最佳答案

https://docs.angularjs.org/guide/$location#html-link-rewriting

In cases like the following, links are not rewritten; instead, the browser will perform a full page reload to the original link.

  • Links that contain target element Example:
    <a href="/ext/link?a=b" target="_self">link</a>

  • Absolute links that go to a different domain Example:
    <a href="http://angularjs.org/">link</a>

  • Links starting with '/' that lead to a different base path when base is defined Example:
    <a href="/not-my-base/link">link</a>

因此,在您的情况下,您应该添加一个目标属性,如下所示...

<a target="_self" href="example.com/uploads/asd4a4d5a.pdf" download="foo.pdf">

关于Angularjs简单文件下载导致路由器重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16670754/

相关文章:

javascript - 如何修复 promise i̶n̶ ̶F̶i̶r̶e̶f̶o̶x̶?

javascript - 带有静态节点的 Angularjs ngSwitch?

javascript - 如何在grails <g :select using angularjs中为multi select2标签元素设置多个值

javascript - ngPattern 绑定(bind)不起作用

javascript - 根据是/否将 Controller 中的项目保存到数组中

angularjs - 了解 AngularJS 和 Google Chrome 内存管理

javascript - 多重检查的最佳方法是在 Angular 数组中

javascript - 如何将值从 Controller 传递给指令

angularjs: $http 基本认证

javascript - 带有表单验证的 ng-show formname.inputname.$error 失败