【问题标题】:Download local file [duplicate]下载本地文件[重复]
【发布时间】:2019-01-08 13:54:01
【问题描述】:

HTML 文件

<button mat-button (click) = "FileDownload">Download</button>

角四分量法

FileDownload()
{
  this.filePath = "D:\SamplePDF.pdf";
  document.loation.href = this.filePath;

}

在这里,我想在单击按钮时下载本地文件。我无法下载该文件。请帮忙。

PS:我也无法访问 window.open(),因为我正在使用 Angular 4 应用程序。

【问题讨论】:

  • file:///d:/SamplePDF.pdf?
  • @john,我在控制台中收到此错误:不允许加载本地资源
  • 那是不可能的,因为你浏览器的安全设置。见here

标签: javascript jquery asp.net angular


【解决方案1】:

你可以这样做。

<a href="your_link" download> file_name </a>

使用标签而不是按钮并在那里实现材质按钮样式。 并使用download属性实现下载动作。

【讨论】:

    【解决方案2】:

    ¿ 你使用的是 ngnix 还是 apache?您可以通过将内容作为“附件”发送(使用“Content-Disposition”标头)来强制使用 ngnix 或 apache 下载。

    这是使用 Nginx 执行此操作的示例配置:

    server {
        listen 80;
        server_name my.domain.com;
        location ~ ^.*/(?P<request_basename>[^/]+\.(pdf))$ {
            root /path/to/pdf/
            add_header Content-Disposition 'attachment; filename="$request_basename"';
        }
    }
    

    【讨论】:

      【解决方案3】:

      试试这个

      javascript

      window.open('file:///c://Documents/folder/file.ext', 'Download');
      

      html

      <a href="file:///C://Documents/folder/file.ext">Download Me</a>
      

      【讨论】:

      • 我无法访问 window.open。我正在使用 Angular 4 应用程序。有什么想法吗?
      【解决方案4】:

      你可以试试这个sn-p

      function downloadFunc(){
          	var anchor=document.createElement('a');
          	anchor.setAttribute('href','D:/SamplePDF.pdf');
          	anchor.setAttribute('download','');
          	document.body.appendChild(anchor);
          	anchor.click();
          	anchor.parentNode.removeChild(anchor);
        }

      【讨论】:

      • 我使用了您的代码,但在控制台中出现同样的错误:不允许加载本地资源。
      • 顺便说一句,我尝试了不同的方法使用gist.github.com/liabru/11263260
      • "不允许加载本地资源" 本地文件和服务器不同,出现该问题的时间。否则,您可以尝试将本地文件转换为 blob 数据,然后设置锚元素,这可能会有所帮助。
      【解决方案5】:

      你可以试试这样的:

      /**
       * Method is use to download file.
       * @param data - Array Buffer data
       * @param type - type of the document.
       */
      downLoadFile(data: any, type: string) {
          var blob = new Blob([data], { type: type.toString() });
          var url = window.URL.createObjectURL(blob);
          window.open(url);
      }
      

      【讨论】:

      • 什么是 Blob?我们需要安装任何软件包吗?
      • 谢谢,但是如何将文件转换为数据?
      • 无论您将文件/数据和文件类型传递给“downLoadFile(data: any, type: string)”。
      猜你喜欢
      • 2020-06-24
      • 2013-06-08
      • 2016-04-25
      • 2017-05-14
      • 1970-01-01
      • 2019-02-20
      • 2012-11-30
      • 2012-12-25
      • 1970-01-01
      相关资源
      最近更新 更多