Ich versuche, Dateien von der Angular 4-Anwendung in einen JSON-API-Dienst hochzuladen, der base64-Zeichenfolgen als Dateiinhalt akzeptiert.
Also was ich tue - lies die Datei mit FileReader.readAsDataURL
, dann, wenn der Benutzer den Upload bestätigt, erstelle ich eine JSON Anfrage an die API und sende die base64
Zeichenkette der Datei, die ich früher bekommen habe.
Hier fängt das Problem an - sobald ich etwas mit dem "Inhalt" mache (log es, sende es, w / e) wird die Anfrage gesendet, aber seine wahnsinnig langsam, z 20 Sekunden für 2 MB Datei.
Ich habe es versucht:
ArrayBuffer
und manuelle Konvertierung in base64 @angular/common
aber alles führt zum gleichen Ergebnis.
Ich weiß, wo das Problem liegt. Aber warum passiert es ? Ist es etwas Browserspezifisches oder Angular spezifisch? Gibt es einen bevorzugten Ansatz (Denken Sie daran, es muss Base64 String sein)?
Anmerkungen:
Code:
Diese Methode wird ausgeführt, wenn der Benutzer der Dropzone eine Datei hinzufügt:
%Vor%Diese Methode wird ausgeführt, wenn Benutzer auf die Schaltfläche zum Speichern klicken
%Vor% Um große Dateien zum Server zu senden, sollten Sie FormData
verwenden, um es als mehrteilige anstelle einer einzelnen großen Datei zu senden.
Etwas wie:
Vergessen Sie auch nicht, den Header 'Content-Type': undefined
zu setzen, ich habe mich stundenlang über diesen Kopf gekratzt.
Tags und Links json rest base64 file-upload angular