Hallo,
Dein Code scheint einiges zu verdoppeln und durcheinander zu bringen, daher habe ihn für mein Verständnis einmal aufbereitet (http://jsfiddle.net/molily/LRGdg/). Ich habe die revokeObjectURL-Aufrue entfernt, das sollte man natürlich nicht tun, wenn man sie später noch einmal wiederverwenden will.
window.URL.createObjectURL erzeugt ein Objekt, »whose lifetime is tied to the document in the window on which it was created« (MDN).
Das bedeutet m.E., dass es nicht im localStorage abgespeichert werden kann. Denn der Sinn von localStorage ist, Daten zwischen window-Kontexten zu teilen, also Daten über einen Seiten-Wechsel bzw. -Reload zu persistieren.
Beim Aufruf von localStorage.setItem() wirft obiges Script im Chrome eine Security-Exception. Im Firefox und Safari funktioniert es interessanterweise, auch über einen Reload hinaus!
Bloß das Problem ist, dass im Formular noch mehr sachen stehen sollen später und wenn ich dann auf den Button Vorschau drücke,dann lädt die Seite neu und die Vorschau ist wieder weg.
Dann sorge dafür, dass kein Seitenwechsel stattfindet, z.B. indem du das Formular per Ajax absendest oder es ein verstecktes Iframe als target hat. Dann kannst du die Bild-URLs einfach irgendwo in einer Variablen/Objekteigenschaft speichern und wiederverwenden.
Allgemein verwendet man wegen solchen Problemen Single-Page-Apps, führt also keine oder nur wenige Seitenwechsel durch. Dadurch bleiben die JavaScript-Objekte, die man einmal aufgebaut hat, im Speicher. Das ist natürlich besonders bei Dateien nützlich, die der Nutzer über <input type="file"> ausgewählt hat.
Eine Alternativmöglichkeit wäre, das Bild über die File-API als Data-URI auszulesen und diese Data-URI im localStorage abzuspeichern. Allerdings bekommt man dann die Bilddaten Base64-kodiert in einem String, und der kann riesig sein. Das Abspeichern im localStorage ist möglich, aber je nach Bildgröße und Dateianzahl ist das Limit schnell erreicht. Darüber wirst du vermutlich schon hinaus sein und hast aus Gründen zu createObjectURL gegriffen...?
Mathias