Ein Image vom Server abrufen, in localStorage speichern und anzeigen

8

Das sollte einfach genug sein, aber nachdem ich stundenlang damit gerungen habe, kann ich es immer noch nicht zur Arbeit bringen. Bis jetzt haben alle meine Versuche dazu geführt, dass das Image laut Firefox "korrumpiert oder abgeschnitten" wurde.

Rufen Sie das Bild mit einem jquery-ajax-Aufruf vom Server ab:

%Vor%


Base64 codiert das Bild und speichert es in localStore:
In diesem Beispiel verwende ich das jquery base64-Encoding-Plugin, aber ich habe mehrere versucht.

%Vor%


Zeigen Sie das Bild mit einer Daten-URL an:

%Vor%


Das entsprechende img:

%Vor%


Bei jedem Versuch zeigt Firefox jedoch:

%Vor%


Die Url: verweist auf ein gültiges JPEG-Bild und die Base64Image.length und die Fehlermeldung zeigen, dass das var / localStorage tatsächlich enthält, was base64-codierte Daten zu sein scheinen.

Irgendwelche Ideen?

    
TinkerTank 19.03.2011, 18:25
quelle

4 Antworten

7
  

Javascript (AJAX-Aufruf)

%Vor%

PHP (laden.php)

%Vor%

Lesen Sie dies kann Ihnen helfen:

  

PS: Vielleicht ist deine Base64 falsch?

    
Luca Filosofi 19.03.2011, 18:50
quelle
6

Browser haben andere Größenbeschränkungen als das lokale Speicherlimit von 5 MB. Die Daten für <img src="data:image/jpeg;base64,..."> sind ebenfalls eingeschränkt und liegen in der Regel deutlich unter 5 MB. Der einfachste Weg ist, die Dateinamen einfach über localStorage zu übergeben und die Zwischenspeicherung durch den Browser durchführen zu lassen.

    
bartonlp 07.11.2012 21:35
quelle
2

Stellt sich heraus, AJAX kann nicht verwendet werden, um binäre Daten zuverlässig zu übertragen. Die Lösung besteht darin, die Base64-Codierung serverseitig auszuführen und die resultierende Zeichenfolge über AJAX zu übertragen.

Der obige php-Code funktioniert. Für alle, die nach einer ASP.Net / C # Lösung suchen:

%Vor%

Bitte beachten Sie, dass dieser Code NICHT SICHER ist, um ihn direkt der Außenwelt auszusetzen. Ich persönlich benutze eine Wrapper-Funktion, die den Pfad von einer db analysiert.

    
TinkerTank 26.05.2011 15:57
quelle
0

Sie können das Daten-URI (das die Basis-64-Kodierung enthält) über JavaScript mit dem HTML5-Canvas-Element abrufen.

%Vor%

dataUri enthält jetzt die Daten uri für das Bild, die zusammen mit einem kurzen Präfix die Basis-64-Kodierung des Bildes enthalten.

Achten Sie darauf, die Erkennung für die Canvas-Unterstützung hinzuzufügen. IE 8 und älter unterstützen es nicht.

    
Trott 12.08.2012 01:47
quelle

Tags und Links