【问题标题】:Download file from another directory AngularJS从另一个目录 AngularJS 下载文件
【发布时间】:2018-12-19 10:49:37
【问题描述】:
我正在处理一个 angularJS 项目,当用户单击下载按钮时,我必须触发 .txt 文件的下载。
但是该文件存在于另一个目录中
<a ng-if="ErrorReport && ErrorMessage" href="../../C:\Users\Ali\Pictures\{{ErrorReport}}.txt"
class="btn btn-primary"
download>
Download error report
</a>
文本文件(要下载)是由 API 在运行时创建的错误报告,因此它始终具有动态名称,这就是我在 href 中使用 {{ErrorReport}} 的原因
知道如何给它引用应用程序目录之外的文本文件吗?
【问题讨论】:
标签:
javascript
angularjs
file-handling
【解决方案1】:
试试这个:
href="file:///C:\Users\Ali\Pictures\{{ErrorReport}}.txt"
您使用的是相对路径语法和绝对路径语法,
所以我的例子是使用正确的绝对路径
【解决方案2】:
在你的html中使用ng-href而不是href,同时给出浏览器理解的绝对路径。 ng-href 将有助于绑定作用域内容。
<a ng-if="ErrorReport && ErrorMessage" ng-href="file:///C:/Users/Ali/Pictures/{{ErrorReport}}.txt"
class="btn btn-primary"
download>
Download error report
</a>
但它不会完全解决您的问题。您正在尝试从浏览器访问本地资源。为此,您需要允许浏览器访问本地文件。
转到 Chrome 可执行文件,然后在 cmd 下运行
.\chrome.exe --allow-file-access-from-files
现在您可以从本地访问文件,但同样危险。
它将使您的文件系统保持打开状态,以便从浏览器访问。来自任何地方的文档都可以访问本地 file:/// 资源。
最好在文件所在的文件夹中运行一个服务器实例,并像http://localhost:8080/file.txt 一样访问该文件。
您可以为此使用 chrome 扩展程序 200 OK,或者您可以使用节点的包管理器全局 install http-server
npm install -g http-server
你可以从你的命令提示符启动服务器
C:\Users\Ali\Pictures> http-server
希望这能解决您的问题!