2017-06-20 57 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); } }

相關問題