2014-12-06 18 views
5

Na początek JS nie jest jedną z moich mocnych stron. Próbowałem przez kilka ostatnich dni edytować tę funkcję JS, aby zmusić ją do pobrania obrazu base64. Po kliknięciu przycisku pobierania funkcja otwiera nowe okno z obrazem. Użytkownik musi wtedy kliknąć prawym przyciskiem myszy i zapisać zdjęcie. Próbuję wymusić pobranie obrazu zamiast kliknięcia prawym przyciskiem i "zapisz jako".force download image base64

dataurl produkować base4 PNG string (dane: image/jpeg; base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQ .........)

Próbowałem przy użyciu jak sugerowano w innym wątku, ale to nie działa.

Wszystkie sugestie są mile widziane. Dzięki.

savePaint: function() { 
      var self = this; 

      dataURL = self.context.canvas.toDataURL(); 

      var cntnt = $("<p class='dialogHeader'>Please right click and select 'Save Image As' option. Click here to Return</p>   <img id='PrintImage' src=" + dataURL + ">"); 
      self.newSavedImage.html(cntnt); 

      self.showPopup(self.newSavedImage, self.canvasWidth, self.canvasHeight) 
} 

Odpowiedz

0

Można określić inny typ MIME zamiast image/jpeg więc przeglądarka nie próbuje otworzyć obraz natywnie:

data:application/octet-stream;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/... 

To zmusi plik do pobrania, ale zauważyłem w niektórych konfiguracjach przeglądarek może autozapisywać domyślną nazwę pliku, a ponieważ przeglądarka nie zna rzeczywistego typu pliku, użytkownik będzie musiał określić poprawny typ. Niestety schemat URI danych nie pozwala na sugerowaną nazwę pliku.

Zapoznaj się z Using HTML5/Javascript to generate and save a file, aby uzyskać więcej możliwych rozwiązań. Najlepszym rozwiązaniem, w zależności od wymagań, może być zastosowanie rozwiązania opartego na technologii Flash, takiego jak Downloadify.

5

Wreszcie! Mam to do pracy. Dla każdego, kto boryka się z tym samym problemem, znalazłem tutaj funkcję, która pozwoli ci pobrać bazę base64.

+3

Odpowiedzi dotyczące wyłącznie linków nie są dobre. Proszę wprowadzić odpowiedni kod do swojej odpowiedzi. –

+0

kciuk w dół aż do dodania kodu. link jest zbyt dużą ścianą tekstu. lepiej prosta odpowiedź z kodem tutaj: http://stackoverflow.com/questions/14011021/how-to-download-a-base64-encoded-image – Andrew