首页 文章

Polymer app无法下载动态生成的文件

提问于
浏览
0

我试图在Polymer 2.0应用程序中下载动态生成的文件 . 下载适用于聚合物元素,但由于我认为应用程序路由,因此无法在聚合物应用程序中运行 . 下载的Javascript代码如下:

_downloadCSV() {
      var bigarray = ['User name, Full name, Age, City, Email\n'];
      var a = window.document.createElement('a');
      a.href = window.URL.createObjectURL(new Blob(bigarray, { type: 'text/csv' }));
      a.download = 'test.csv';

      // Append anchor to body.
      document.body.appendChild(a)
      a.click();

      // Remove anchor from body
      document.body.removeChild(a)
  }

该代码用于Polymer 2.0元素 . 当与"polymer serve"一起使用时,它适用于元素演示页面 . 但是,在Polymer应用程序中使用该元素时,下载不再有效 . app-route元素重定向到第404页 . 是否可以更改app-route的行为,以便浏览器而不是应用程序处理这种URL(a.href = blob:http://127.0.0.1:8081/d14faaa1-a0c7-48f9-b3ba-77492c43a551)?任何帮助将不胜感激 .

2 回答

  • 0

    您需要设置Web服务器以允许从您的URL下载文件 .

    默认使用URL的路径名部分的app-location路由 . 这有广泛的浏览器支持,但它确实需要后端服务器的合作 .

    https://github.com/PolymerElements/app-route#hashes-vs-paths

  • 0

    下面的解决方案可能是一个简单的解决方案:

    • 为app-location元素指定一个ID:

    <app-location id =“apploc”route =“{}”> </ app-location>

    • 保存app-location元素:

    connectedCallback(){super.connectedCallback(); this.apploc_ele = this . $ . apploc; }

    • 具有打开/关闭应用程序路由的功能:

    enableAppLocation(enable){if(!enable){this . $ . apploc.remove(); } else {this.shadowRoot.appendChild(this.apploc_ele); }}

相关问题