Versuchen, Benutzerbild auf Server zu speichern. Sehr neu, dies zu, so dass ich umsah gerade erst begonnen und ich fand den folgenden Code:JavaScript: Fehler beim Konvertieren von Benutzer inputed Bild zu Base64
function getBase64Image(imgElem) {
let canvas = document.createElement('canvas');
canvas.width = imgElem.clientWidth;
canvas.height = imgElem.clientHeight;
let ctx = canvas.getContext('2d');
ctx.drawImage(imgElem, 0, 0);
let dataURL = canvas.toDataURL('image/png');
return dataURL.replace(/^data:image\/(png|jpg);base64,/, '');
}
Ich bin mit dieser Funktion kann ein Benutzer eingegebene Bild auf meinem lokalen Server zu speichern, aber ich bekomme die folgende Fehlermeldung:
factories.js:1 Uncaught TypeError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The provided value is not of type '(HTMLImageElement or HTMLVideoElement or HTMLCanvasElement or ImageBitmap)'getBase64Image @ factories.js:1SubmitRecipe @ recipe-submission.js:1onclick @ submitrecipe:43
ich packte das Bild mit einem Eingang-Tag, das type
Satz file
hat. Hier ist mein Code:
HTML
<label>Image</label>
<span class='err-message' id='image-err'></span></br>
<input type="file" id='image'>
JS
function SubmitRecipe() {
//sets the recipe object and its keys
let recipe = { alias: null, description: null, category: null, instructions: null, image: null };
let img = document.getElementById('image');
recipe.image = JSON.stringify(getBase64Image(img));
}
Ich glaube, das Problem mit der Tatsache zu tun hat, dass das Element image
ist ein HTMLInputElement
, und dass isn 't was drawImage
erwartet. Ich habe nur keine Ahnung, wie ich es lösen soll.
Alle Hilfe ist willkommen.
Haben Sie canvas Element in Ihrem HTML platziert ?? –
Wenn Sie haben Sind Sie sicher, dass diese Funktion beim erfolgreichen Laden des Bildes aufgerufen wurde? Ich meine onload-Ereignis –
@kernallora Ist das nicht was 'Canvas = document.createElement (' canvas '); 'tut? Und der Fehler kommt von 'ctx.drawImage (imgElem, 0, 0);', also glaube ich, dass die Funktion aufgerufen wird. – user5854440