2017-06-20 59 views
0

我正尝试在聚合物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元素。当配合“聚合物服务”时, 它在元素演示页面中工作。 但是,当该元素用于聚合物应用程序时,下载不再有效。 app-route元素重定向到404页。是否可以更改app-route的行为,以便这种类型的URL(a.href = blob:http://127.0.0.1:8081/d14faaa1-a0c7-48f9-b3ba-77492c43a551)由浏览器而不是应用程序处理? 任何帮助将不胜感激。

回答

0

您需要设置您的Web服务器以允许从您的网址下载您的文件。

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

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

+0

谢谢!然而,这可能是最好的方式,可能并不容易。我通过禁用/启用应用程序路由来制定解决方法。 – user3368148

0

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

  1. 给该应用定位元件的ID:

    < APP-位置ID =“apploc “route =”{{route}}“> </app-location >

  2. 保存应用程序位置元素:

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

  3. 具有以下功能:打开应用路由开启/关闭:

    enableAppLocation(启用){ 如果(启用!){ 此$ apploc.remove(); } else { this.shadowRoot.appendChild(this.apploc_ele); } }

相关问题