2013-12-07 16 views
5

używam tego kodu do zapisywania obrazów w JavaScript:Missing rozszerzenie podczas zapisywania obrazu z płótna

window.location.href = grid.toDataURL("image/png").replace("image/png", "image/octet-stream"); 

Kod działa, ale plik zapisany nie ma żadnego rozszerzenia, muszę go zmienić nazwę ręcznie.

Moje pytanie brzmi: jak mogę umieścić przedłużenie na końcu?

Dziękuję.

Odpowiedz

7

tworzy dane-uri zamiast nazwy pliku, więc rozszerzenia nie mają zastosowania w tym przypadku.

Dane-uri to po prostu zakodowana w tekście wersja binarnej treści, którą niektóre przeglądarki mogą odczytywać jako plik - strumień danych, jeśli zechcesz. Ponieważ strumienie danych nie mają nazwy pliku, nie można ich dołączyć.

Można to obejść ustawiając znacznik zakotwiczenia tak:

<a id="imageLink" href="data-uri-here" download="myFilename.png"> 
    Click to download 
</a> 

W JavaScript można ustawić te atrybuty dynamiczne:

imageLink.href = grid.toDataURL(); 
imageLink.download = 'myOtherFilename.png'; 
+0

Bardzo fajne rzeczy! Dziękuję;) Czy istnieje inny sposób, aby to zrobić zamiast deklarować link w html? Używam biblioteki dat-gui dla moich przycisków i nie wiem, jak utworzyć pobieranie attr. – mickaelb91

+0

@ mickaelb91 z pewnością, możesz po prostu utworzyć tag również w javascript. Istnieje również opcja automatycznego wyzwalania kliknięcia. Sprawdź to: http://stackoverflow.com/questions/18480474/how-to-save-an-image-from-canvas/18480879#18480879 – K3N