Erzwinge das Einfügen-Ereignis, um Bilder in base64 zu codieren

8

Hintergrund:

Ich entwickle eine HTML5-Webanwendung für meine Firma, bei der es sich im Grunde genommen um einen Rich Text-Editor (ähnlich wie bei Google Text & Tabellen) handelt, der Informationen in einer Datenbank speichert.

Wir verwenden CKEditor 3 als Richtext-Editor und Jquery, um dies zu erreichen.

Wir haben Google Chrome als bevorzugten Browser ausgewählt.

Unsere App befindet sich derzeit im Alpha-Testzeitraum und hat eine Gruppe von 18 Testern (die die gleichen sind, die die App verwenden). Diese Leute sind heterogen, aber fast alle von ihnen haben grundlegende Computerkenntnisse, meist beschränkt auf MS Word und MS Excel.

.

Problem:

Die meisten unserer Benutzer verwenden immer noch Wort, um das Dokument auszuarbeiten, hauptsächlich aufgrund seiner Fähigkeit, reichhaltige Flussdiagramme zu erzeugen. Beim Kopieren / Einfügen des generierten Inhalts in Chrome werden Bilder als Link zu einer lokalen Datei eingefügt (automatisch vom Betriebssystem generiert, in einem Ordner "users / * / temp"). Dies bedeutet, dass der Server nicht auf diese Dateien zugreifen kann und die resultierenden Dokumente (generierte PDFs) die Bilder nicht enthalten.

.

Frage

Wie kann ich das Einfügen von Bildern in base64 erzwingen, ähnlich wie in Firefox?

.

Hinweise

Wenn es möglich ist, ein Bild, das als src="file: // c: \ irgendwas" referenziert wird, auf den Server "hochzuladen", würde das mein Problem lösen, da ich das Bild später kodieren kann.

Wir können nicht zu Firefox wechseln, da es unser Problem nicht vollständig löst (wenn ein Bild neben dem Text "eingefügt" wird, firefox kodiert es nicht) und wirft andere Probleme auf, wie zum Beispiel eine horizontale Bildlaufleiste, die erscheint Der Text ist zu lang, um in das Textfeld zu passen.

    
Tivie 03.11.2011, 19:00
quelle

1 Antwort

7

Ja und nein, ich glaube.

Es ist möglich, das Einfügeereignis abzufangen und das eingefügte Bild als Datei abzurufen. Verwenden Sie dann FileReader , um die Datei als Daten-URI (Basis-64-kodiertes PNG) zu lesen.

Word scheint jedoch einen Verweis auf eine lokale Datei zu senden, die aufgrund einer domänenübergreifenden Anforderung ( http://... und file:///... ) eine Sicherheitsausnahme generiert (zumindest in Chrome). Soweit es mich betrifft, gibt es keine Möglichkeit, den tatsächlichen Inhalt solcher lokalen Dateien zu erhalten, und die Inhalte werden nicht als Zwischenablagedaten selbst gesendet.

Wenn Sie ein "reines" Bild (zB aus Paint) kopieren, können Sie die Basis-64-kodierten Daten wie folgt erhalten: Ссылка . Oder hängen Sie das Bild als 64-codierte PNG-Basisdatei an das Ссылка an.

%Vor%     
pimvdb 03.11.2011, 19:13
quelle