【问题标题】:<a href download> does not download when clicked [duplicate]<a href 下载> 单击时不下载 [重复]
【发布时间】:2019-04-09 08:08:09
【问题描述】:

我正在用 Python 和 Flask 构建一个 Web 应用程序。这是目录结构:

TopWebApp   
│
└───webApp
│   │   ui.py
│   │   back-end.py
│   │   result.txt
│   │
│   └───templates
│       │   index.html
│       │   ...
│   
└───venv
    | ...

在 index.html 中,我有:

  <a href="C:\Users\...\webApp\result.txt" download>
    <button>click here</button>
  </a>

在 chrome 70 中,当我单击“单击此处”按钮时,没有下载任何内容,如果我在新选项卡中打开它,新选项卡将显示“about::blank”。

由于 result.txt 保存在同一目录下,我尝试更改 'href=".result.txt"' 和 'href="./result.txt"' 但下载失败 - 无文件.你知道为什么会这样吗?

【问题讨论】:

  • 试试:&lt;a href="result.txt"&gt;click here&lt;/a&gt;
  • 不要使用本地驱动器路径。它们在网页中无效
  • @NicholasSmith 试过了,给了我一个“失败 - 无文件”下载并在新选项卡中打开它给我一个“404 Not Found”网页

标签: javascript html flask web-applications


【解决方案1】:

作为安全措施,浏览器将阻止通过超链接链接到本地文件(例如您的C: 驱动器上的文件)。这包括download attribute 的超链接。如果您想允许用户从您的服务器下载,您需要相对于您的服务器本身进行引用。这可以通过 https://www.yourwebsite.com/yourfile.txt 之类的绝对链接来完成,但我建议使用相对链接,例如:

<a href="../result.txt" download>
  <button>click here</button>
</a>

请注意,在此特定示例中,该文件是链接到它的文件的上一个文件夹,因此您需要使用 ../ 遍历您的目录结构。

如果您只是直接通过文件资源管理器打开文件(而不是 localhost,则需要 file:/// 前缀,如 file:///C:/Users/.../webApp/result.txt。注意开头的三个正斜杠和正斜杠贯穿始终。

【讨论】:

  • 我试过上面的代码。但是,当单击该按钮时,我会下载“失败 - 无文件”。在新选项卡中打开链接也会生成“404 Not Found”。
  • 那么您的.txt 文件在您的索引文件的父文件夹中吗?然后../result.txt 应该可以工作,假设您通过localhost(或适当的服务器)之类的方式运行您的网站。如果您只是直接通过文件资源管理器打开文件,则需要 file:/// 前缀,如 file:///C:/Users/.../webApp/result.txt。请注意开头的三个正斜杠和整个正斜杠。请参阅 this answer 了解为什么会这样。
  • 是的,我的 .txt 文件位于 webApp 文件夹中,该文件夹是 index.html 文件的父文件夹。我正在通过 localhost 运行 Web 应用程序。使用 'file:///C:/Users/.../webApp/result.txt' 有效,但它不会让我下载 result.txt 文件,而且我无法在新标签中加载。跨度>
猜你喜欢
  • 2021-07-30
  • 2013-09-10
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 2018-09-20
相关资源
最近更新 更多