2013-03-04 11 views
9

Próbuję użyć saveAs interfejs jak wyjaśniono herehtml5 saveas wsparcie w Google Chrome

Na razie martwię się tylko o Google Chrome, a ja wykorzystuje najnowszą Kanaryjskie (wersja 27.0.1429.0 kanarek)

Qn1: artykuł mówi.

W3C API Plik zawiera interfejs FileSaver, co powoduje oszczędność wygenerowanych danych tak proste jak saveas (dane, nazwy), choć niestety to zostaną ostatecznie usunięte z spec.

Dlaczego zostałby usunięty?

Qn2: Poniżej kodu.

if (window.saveAs) { 
    window.saveAs(blob, name); 
}else{ 
    console.log("saveAs not supported") 
} 

drukuje

saveAs not supported 

Więc chrom nie obsługuje saveas. Nie jest to wrażeniem, które czytałem w Internecie.

+0

Natychmiast założyłem, ponieważ pozwoliłoby to osobie atakującej zapisać szkodliwy plik na komputerze użytkownika. – Daedalus

+5

@Daedalus: cóż, nadal nie jest to całkowicie niemożliwe bez funkcji 'saveAs()', po prostu utwórz dla niego małe skrzypce http://jsfiddle.net/shivasaxena/qnYk4/3/ – Shiva

+0

@Shiva - idealnie, działa świetnie - ty powinien opublikować to jako alternatywę dla funkcji, która odchodzi. –

Odpowiedz

3

to jest polyfill, jak wyjaśniono w artykule. Musisz załadować plik JavaScript wymienione w artykule, zapisać go w swoich zasobach i link do niego w kodzie: Repozytorium jest tam: https://github.com/eligrey/FileSaver.js

Istnieją ograniczenia w Chrome, chociaż. Jeśli plik jest już zapisany, nowa nazwa zapisu jest zwiększana: myFile (1), następnie myFile (2), itp.

Mam teraz błąd w Chrome, który mówi, że nie może otworzyć pliku, ale jest tylko fałszywe ostrzeżenie, ponieważ plik jest dobrze ZAPISANY, o co chodzi.