2014-01-22 34 views
5

我正在開發一個客戶端音樂播放器,並且正在尋找一種方法來保存播放列表以及mp3數據。是一個跨瀏覽器保存文件爲按鈕可能嗎?

localStorage localbatch規則的5mb限制選項。我想知道還有其他的選擇。

DataURIs 我讀過dataURIs例如 Is there any way to specify a suggested filename when using data: URI?Cross-browser Save As .txt 但不建議使用默認文件名,特別是缺少IE支持是違規行爲。

IndexedDB HTML5 indexedDB and persistence lifetime表明IndexedDB不是持久存儲的選項。

有沒有我缺少的選項?但願如此!

感謝, 安德魯

+1

只有客戶端,不涉及服務器?然後我不明白你爲什麼要下載/保存MP3數據,因爲它應該已經在客戶端上了,對吧?播放列表文件的5 MB限制也不應該是真正的問題。 – CBroe

+0

在帶有修改標題的新瀏覽器選項卡中打開該文件,如'Content-Disposition:attachment;文件名= 「playlist.txt」'。我相信這會始終強制保存在瀏覽器中彈出。 – slash197

+0

標題和問題本身要求不同的事情。這個問題本身增加了更多的困惑,你想要的究竟是什麼? – gpgekko

回答

2

我現在有一個解決方案,它在IE,Chrome和Firefox的作​​品,受此啓發:Javascript set file in download

的IE10 +解決方案使用msSaveBlob和代碼是:

if (navigator.msSaveBlob) { 
    var blob_object = new Blob([store_string], {type: mime_type}); 
    return navigator.msSaveBlob(blob_object, filename); 

    } 

對於Chrome/Firefox,它使用下載屬性:

else if ('download' in a) { 
    blob_object = new Blob ([store_string], {type: mime_type}); 
    a.href = URL.createObjectURL(blob_object); 
    a.setAttribute("download", filename); 
    a.innerHTML = "downloading..."; 
    d.body.appendChild(a); 
    setTimeout(function() { 
     a.click(); 
     d.body.removeChild(a); 
    }, 66); 
    return true;  
} 

我還沒有進行調查Safari瀏覽器,歌劇或任何移動瀏覽器...

2

否 - 一個跨瀏覽器的另存爲解決是不可能的

Chrome瀏覽器,IE,& FF都支持一種(或多種)方式以編程方式觸發文件的下載(和另存爲對話框)。 Safari不支持此功能。

相關問題