【问题标题】:Anchor tag with download attribute opens file instead of downloading具有下载属性的锚标记打开文件而不是下载
【发布时间】:2023-03-08 03:22:01
【问题描述】:

在我的 Reactjs 应用程序中,我使用锚标记下载了一个 txt 文件,如下所示。

<a href="http://textfiles.com/......./sample.txt" download>download</a>

在那里我添加了 download 属性来强制它下载而不是在浏览器选项卡中打开它。

但它仍然在同一个标​​签中打开而不是下载。谁能帮我解决这个问题。

【问题讨论】:

  • 你使用的是webpack还是create-react-app
  • @Abinthaha 我正在使用 create-react-app
  • 您需要先import 将文件添加到锚标记中。您不能使用直接链接。

标签: html reactjs


【解决方案1】:

查看您的示例,您似乎没有使用相同的来源,这可能会导致问题。

如果您尝试下载存在于同一来源的文件,那么我建议您使用相对 url 而不是绝对 url。

例子:

<a href="/public/sample.txt" download>download</a>

请看docs发来的留言:

属性:下载

注意事项:

  • 此属性仅适用于same-origin URLs
  • 虽然 HTTP(s) URL 需要同源,blob: URLsdata: URLs 允许使用 JavaScript 生成的内容,例如 作为在图像编辑器 Web 应用中创建的图片,可以下载。
  • 如果 HTTP 标头 Content-Disposition: 给出不同的文件名 比此属性,HTTP 标头优先于此 属性。
  • 如果 Content-Disposition: 设置为内联,Firefox 优先 Content-Disposition,如文件名大小写,而 Chrome 优先 下载属性。

【讨论】:

  • 非常感谢@Bhojendra Rauniyar。得到最佳答案
【解决方案2】:

这样试试

import File from 'http://textfiles.com/......./sample.txt'; //Or the path could be any relative path to the local file.

//Other code
render() {
    return(
        //Code
        <a href={File} download>download</a>
    )
}

但是为了像这样使用,您应该确信您会毫无问题地获得文件。最好下载文件并从您自己的目录访问它,而不是从另一台服务器调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多