Ich möchte ein Bild der Benutzer von ihrem Rechner zusammen mit Formulardaten gesendet alle in einem JSON-Objekt verpackt und an den Server gesendet. Ich benutze Knoten für den Server. Ist es möglich, das Bild zusammen mit den anderen Formularelementen im JSON-Objekt zu platzieren und Node einzulesen?Senden von Bild- und JSON-Daten an den Server mithilfe der Ajax POST-Anforderung?
Antwort
Die üblichen Methoden, die ich vorfand, sind die Verwendung des Base64-String-Ansatzes: Sie kodieren Ihr Bild in eine Base64-Zeichenfolge und legen es als Teil des JSON-Objekts fest, das Sie an Ihren Server senden.
Ein anderer Ansatz scheint die Verwendung der Binärdaten in JSON zu sein, aber ich habe das vorher noch nie versucht, also nicht viele Informationen von mir.
Here's ein Codebeispiel für eine Base64-Codierung in Javascript. Suchen Sie speziell nach der folgenden Methode
function getBase64Image(imgElem) {
// imgElem must be on the same server otherwise a cross-origin error will be thrown "SECURITY_ERR: DOM Exception 18"
var canvas = document.createElement("canvas");
canvas.width = imgElem.clientWidth;
canvas.height = imgElem.clientHeight;
var ctx = canvas.getContext("2d");
ctx.drawImage(imgElem, 0, 0);
var dataURL = canvas.toDataURL("image/png");
return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}
Ich benutze Python Flask Framework, also wie kann ich das Bild zurück in Python aus der Base64-String? –
Es gibt eine Möglichkeit, dies zu erreichen: Verwenden Sie Bilddaten.
In Javascript, auf Client-Seite, erlaubt der FileReader Ihnen, binäre Bilddaten zu lesen und sie in eine Base64-codierte Zeichenfolge zu bekommen.
Auf Client-Seite:
var file = $('.file-upload > input')[0].files[0];
function upload(file) {
var reader = new FileReader();
// when image data was read
reader.onload = function(event) {
// I usually remove the prefix to only keep data, but it depends on your server
var data = event.target.result.replace("data:"+ file.type +";base64,", '');
// make here your ajax call
$.ajax({
url: 'and_so_on',
json: {
data: data
}
});
// read data from file
reader.readAsDataURL(file);
}
Auf Server-Seite, werden Sie empfangen base64 Bild codiert, die Sie easilly in binäre mit dem Buffer Konstruktor übersetzen kann
var buffer = new Buffer(data, 'base64');
gewarnt dass FileReader ist not supported by all browsers
was mache ich, um alle Browser zu unterstützen? – Phoenix
Sie können auch die [btoa()] (https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/btoa) verwenden ([Browser-Unterstützung] (http://caniuse.com/) # feat = atob-btoa)) Funktion zum Erstellen der base64-Zeichenfolge (var data = btoa (event.target.result)) zusammen mit reader.readAsBinaryString (file). Dann müssen Sie die String-Ersetzung nicht durchführen. –
btoa wird auch nur von IE10 unterstützt –
- 1. Postanforderung an einen Server senden
- 2. senden Daten an den Server mithilfe von https mit CURL
- 3. Senden der Fortschrittsnachricht vom Server an den Client mit Ajax
- 4. Winkelrouten senden Daten an den Server
- 5. Senden Sie AJAX an Server vorunload
- 6. Senden von Streaming-Video- und Audiodaten an den Server?
- 7. Senden von Wert und Datei von der Ansicht an den Controller von Ajax-Methode
- 8. Senden eines JSON-Objekts mithilfe von AJAX an ein Servlet und Empfangen eines Antwort-JSON-Objekts
- 9. Abrufen und Senden von Objekten mithilfe von Parse Server
- 10. So senden Sie eine Anfrage an den Server mit HttpURLConnection mithilfe von JSON-Parametern
- 11. Verwendung von cropper.js vor Dropzone.js Bild an Server senden
- 12. Javascript Daten an den Controller auf Ajax Formular senden senden
- 13. Fehler beim Senden der Postanforderung von der Flex-App an Ruby on Rails Back-End
- 14. So senden Sie Daten an ein PHP-Skript und mithilfe der jQuery AJAX load() Anweisung
- 15. Senden mehrerer Anfrage an den Server
- 16. So senden Sie ein Bild von Imageview an einen Server
- 17. Anhalten der Ajax vor dem Senden Bild
- 18. Senden Sie eine Beitragsanfrage an den Server
- 19. Ordnungsgemäße Methode zum Senden von Bildern von der iOS App an den Server
- 20. Best Practice Senden von Benutzername und Passwort an den Server von der App
- 21. Wie kann der Server Daten an den Client senden?
- 22. entfernen neue Zeile beim Senden der Anfrage an den Server über Ajax Post mit JQuery
- 23. GET von PHP-Parameter an AJAX senden
- 24. Ausgabe von AVCaptureSession in Swift zum Senden an den Server
- 25. Senden von Standortaktualisierungen an den Server In Android
- 26. senden Sie eine Kamera Foto an den Server in ionic
- 27. Flash player IE7 BitmapData senden an den Server mit amfphp
- 28. Können Sie mithilfe von SOAP und WSHttpBinding einen jQuery-Aufruf an den WCF-Dienst senden?
- 29. Apache Mina UDP Server Senden von Nachrichten an den Client
- 30. JSON über AJAX an PHP-Skript senden
sicher ist es möglich, welcher Code tun Sie bis jetzt? – Aras