Ich habe ein Problem, einen Klecks in Javascript zu meinem Server erstellt zu. Die Grundidee ist, dass ein Benutzer ein Bild hochlädt und in Javascript zentriere ich das Bild und verkleinere es vor der Übertragung.JavaScript Blob hochladen mit Formdata
Die Bildmanipulation funktioniert gut, aber der Upload selbst nicht richtig funktioniert. Hier ist der Code, den Upload und Konvertierung von der Leinwand tut blob
function uploadCanvasData()
{
var canvas = $('#ImageDisplay').get(0);
var dataUrl = canvas.toDataURL("image/jpeg");
var blob = dataURItoBlob(dataUrl);
var formData = new FormData();
formData.append("file", formData);
var request = new XMLHttpRequest();
request.onload = completeRequest;
request.open("POST", "IdentifyFood");
request.send(formData);
}
function dataURItoBlob(dataURI)
{
var byteString = atob(dataURI.split(',')[1]);
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < byteString.length; i++)
{
ia[i] = byteString.charCodeAt(i);
}
var bb = new Blob([ab], { "type": mimeString });
return bb;
}
Der Server behauptet, dass keine Dateien hochgeladen wurden, und wenn ich Chrom verwenden, um die Anfrage zu prüfen, sehe ich die Anfrage Nutzlast:
------WebKitFormBoundaryyzYbm61DKgS09tpB
Content-Disposition: form-data; name="file"
[object FormData]
------WebKitFormBoundaryyzYbm61DKgS09tpB--
im Gegensatz zur Nutzlast einer Form mit input type="file"
------WebKitFormBoundaryUOn3WXb7pKLmOxRZ
Content-Disposition: form-data; name="imagefile"; filename="-3YQHiVaGWo.jpg"
Content-Type: image/jpeg
------WebKitFormBoundaryUOn3WXb7pKLmOxRZ--
abgegeben wird, so sieht es für mich wie das XMLHttpRequest nur ist das Ergebnis der Upload cal blob.toString()
ling
Weiß jemand, was ich hier falsch mache? Gibt es einen besseren Ansatz, den ich verwenden sollte?
Hey Mann dank für die dataURItoBlob Funktion. Hochladen von Bildern nicht richtig mit nur neuen Blob arbeiten ([window.atob (png)], {Typ: 'image/jpeg'}); –