POSTing base64-Daten JavaScript/jQuery

Ich arbeite an einer website, die Benutzern erlaubt, Fotos zu Bearbeiten (in-browser) und dann hochladen. Zum Bearbeiten der Bilder im browser, ich benutze einige JavaScript-Bibliotheken, die Arbeit mit Bildern in base64. Als ein Ergebnis POSTEN, das Bild auf meinen server, ein einfaches Formular mit einem file-input nicht verwendet werden kann. Der Wert eines versteckten Eingang zu einem base64-string des bearbeiteten Bildes, und das wird Gebucht. Finden Sie in der folgenden, kurzen Beispiel.

http://pastebin.com/PrfWaS3D

Offensichtlich, das ist sehr viel abgespeckt, aber es enthält das problem, ich bin mit in. Bei der Buchung einer 3MB animierte GIF, dauerte es 6,5 Minuten. Während dessen, mein Rechner war fast komplett eingefroren/nicht mehr reagiert. (Hinweis: Dies funktioniert perfekt für kleine Bilder, obwohl)

Könnte es ein OS/browser-Problem (neueste Google Chrome auf Ubuntu), aber ich bezweifle es. Wenn ich Datei-Eingabe in das Formular, und entfernen Sie die base64-ing von Daten, (d.h. - ein standard-POSTing von einer Datei) geht es in ca. einer Sekunde.

Vergleichen 6,5 Minuten, 1 Sekunde. Ich muss etwas falsch machen. Was mache ich hier falsch? Was soll ich tun stattdessen? Ich bin ziemlich neu in der web-Entwicklung, so bin ich ein wenig im Dunkeln. Ich bin mir bewusst, dass base64 tut, entstehen so etwas wie eine 1,3 x Vergrößerung, aber offensichtlich ist die upload-Zeit ist hier nicht Skalierung mit 1,3 x. Ich habe getan, ein wenig von der Konsole.Protokollierung und

var base64 = reader.result;

dauert etwa eine Sekunde. Also ich denke nicht, dass der Engpass da ist. Der Engpass muss im Upload. Aber warum? Warum ist eine form-Datei-Eingang so viel schneller als eine form versteckten Eingang mit base64?

Ich entschuldige mich für meine langatmige post, aber wieder, ich bin neu in web-Entwicklung, und nicht wirklich versteht mein problem, so ist es schwer, präzise zu formulieren, während sich alle Informationen über.

Dank

  • Was ist Ihre back-End-server?
  • -Eine data-url ist nicht das gleiche wie base64... Diese Tage Daten-URLs sind meist UUIDs, nicht die volle base64-Körper + meta-Daten. Hochladen, die UUID ist nutzlos.- Wenn Sie wirklich meinen-in base64-in JS, btoa().
  • Meine back-End-server? Es ist PHP. (Ist das, was du fragst?)
  • Ich war falsch. Ich Sprach über Objekt-URLs. Mein schlechtes. Ihnen sind in der Tat base64 + meta-Daten. Scheint schnell genug, aber: jsfiddle.net/rudiedirkx/4pLAv (Chrome sagt Sie upload-Fortschritt. 4M dauert etwa 15 Sek. für mich gibt. Sie?)
  • Und nach der Eingabe, dass mein computer eingefroren und das tab abgestürzt =)
InformationsquelleAutor No Name | 2013-08-31
Schreibe einen Kommentar