Ich habe dieses einfache Upload-Formular zum Durchsuchen und Hochladen eines Bildes.Verwenden von Base64 im Formular zum Hochladen als Datei
<form action="https://storage.googleapis.com/YOUR_BUCKET_NAME"
method="post" enctype="multipart/form-data">
<input name="key" type="text" value="objectName.txt" /><br/>
<input name="file" type="file" /><br/>
<input type="submit" value="Upload!" />
</form>
Aber ich bin mit einem Bild Cropper, die eine gibt base64
String und will, dass statt laden.
Jetzt erlaubt mir der Browser nicht, den Wert der Dateieingabe in die Zeichenfolge festzulegen, es möchte eine Datei. Jetzt
I ersetzt:
<input name="file" type="file" />
mit:
<input type="hidden" name="file" />
Und das Surfen im Griff/Aufnahme eines Bildes an anderer Stelle.
dies nun irgendwie nicht laden eine Datei, aber das Bild ist ungültig, es ist nur eine Text-Datei mit dem base64
Zeichenfolge in seinem Innern. Wenn Sie den Typ in file
ändern, schlägt der Upload fehl.
Also ich vermute es hat damit zu tun, dass die base64
in eine lesbare Datei konvertiert werden muss.
zum Umwandeln von base64 Nach der Suche in Datei, ich habe versucht:
blobData = atob(imageData)
Aber es Fehler: Uncaught InvalidCharacterError: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.
, während, wenn ich die Zeichenfolge (data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtW....etc
) in die Adressleiste zeigt es richtig einfügen. Gleiches, wenn ich das versuche: http://wiki.lenux.org/base64-string-to-blob-object/ I gibt es viele verschiedene Möglichkeiten, es zu konvertieren, aber ich bekomme den Fehler auf atob
, dass es nicht korrekt codiert ist.
Ich denke, es muss eine einfache Lösung sein, weil der Browser bereits weiß, wie die Zeichenfolge zu dekodieren ist.
Ich habe gefunden: http://www.nixtu.info/2013/06/how-to-upload-canvas-data-to-server.html, die nur die Größe und den Typ des Bildes ausgibt, aber es nicht konvertiert. Und als Wert Einstellung direkt in einem String führen wird: ‚[object Blob]`
Tiefer unten die Rabbithole: Convert Blob to binary string synchronously dies wandelt die blob
zu einem Uint8Array
, ich glaube, ich bin ganz in der Nähe, aber ich bin jetzt verloren.
Um klar zu sein, ich bin auf der Suche nach einer Client-seitigen Lösung, und möchte nicht canvas
oder andere zusätzliche Hilfselemente verwenden.
Versuchen Sie, 'Daten-URI' auf Server hochzuladen oder' Daten-URI' in ein 'Datei'-Objekt zu konvertieren? – guest271314
Siehe http://stackoverflow.com/questions/28856729/upload-multiple-image-using-ajax-php-and-jquery/ – guest271314
@ guest271314, konvertieren, Hochladen funktioniert, aber jetzt ist die Datei eine Textdatei mit die Rohdaten darin. – TrySpace