我正在尝试在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应用程序中使用该元素时,下载不再有效。 app-route元素重定向到第404页。是否可以更改app-route的行为,以便浏览器处理此类URL(a.href = blob:http://127.0.0.1:8081/d14faaa1-a0c7-48f9-b3ba-77492c43a551),而不是应用程序? 任何帮助将不胜感激。
答案 0 :(得分:0)
您需要设置网络服务器,以便从您的网址下载文件。
默认使用URL的路径名部分的app-location路由。 这有广泛的浏览器支持,但它确实需要合作 后端服务器。
https://github.com/PolymerElements/app-route#hashes-vs-paths
答案 1 :(得分:0)
以下解决方案可能是一种简单的解决方法:
为app-location元素指定一个ID:
< app-location id =“apploc”route =“{{route}}”>< / app-location>
保存app-location元素:
connectedCallback(){ super.connectedCallback(); this.apploc_ele = this。$。apploc; }
具有打开/关闭应用程序路由的功能:
enableAppLocation(enable){ if(!enable){ 这$ apploc.remove()。 } else { this.shadowRoot.appendChild(this.apploc_ele); } }