Hallo,
Ich habe ein Dropzone Upload programmiert. An sich funktioniert es auch ganz gut. Hier das Javascript der Upload funktion
Wie man sieht soll der Upload starten, sobald der User die Datei gedropt hat. Bei kleineren Dateien funktioniert das auch. Bei größeren Dateien bekomme ich von der php aber zurück, dass keine Datei ausgewählt wurde. Ich vermute, dass das senden viel zu schnell ausgelöst wird und das Auslesen der Datei noch nicht beendet ist. Dadurch ist sie auch noch nicht angehängt und das Ajax wird ohne Datei gesendet. Wie kann ich ein Event programmieren der darauf wartet dass die Datei ordentlich geladen wird?
Ich habe ein Dropzone Upload programmiert. An sich funktioniert es auch ganz gut. Hier das Javascript der Upload funktion
Code:
dropzone.ondrop = function(e) { e.preventDefault(); this.className = 'dropzone'; var file = e.dataTransfer.files[0]; var formdata = new FormData(); formdata.append("file", file); var ajax = new XMLHttpRequest(); ajax.upload.addEventListener("progress", progressHandler, false); ajax.addEventListener("load", completeHandler, false); ajax.addEventListener("error", errorHandler, false); ajax.addEventListener("abort", abortHandler, false); ajax.open("POST", "/scripts/upload_picture.php"); ajax.send(formdata); function progressHandler(event) { console.log(event.loaded+"/"+event.total); } function completeHandler(event) { var result = event.target.responseText; if(result.substr(0,2) == "OK") { var img = result.substr(3,result.length-3); document.getElementById("profile-picture").style.backgroundImage = "url('"+img+"')"; } console.log(event.target.responseText); } function errorHandler(event) { console.log("upload failed"); } function abortHandler(event) { console.log("upload aborted"); } };
Kommentar