hochladen von mehreren Dateien mit XMLHttprequest
Ich versuche, einen asynchronen Datei-upload-Formular, mit dem Fortschritt in Prozent. Ich dachte, das könnte die Arbeit mit einem FormData-Objekt, aber ich glaube nicht, dass der post arbeitet. passiert nichts wenn ich auf submit. Ich habe geprüft und es gibt keine bugs und es funktioniert auch ohne javascript,so dass die PHP-ist OK, gibt es etwas grundlegend falsch mit dem code?
var handleUpload = function(event){
event.preventDefault();
event.stopPropagation();
var fileInput = document.getElementById('file');
var data = new FormData();
for(var i = 0; i < fileInput.files.length; ++i){
data.append('file[]',fileInput.files[i]);
}
var request = new XMLHttpRequest();
request.upload.addEventListener('progress',function(event){
if(event.lengthComputable){
var percent = event.loaded / event.total;
var progress = document.getElementById('upload_progress');
while (progress.hasChildNones()){
progress.removeChild(progress.firstChild);
}
progress.appendChild(document.createTextNode(Math.round(percent * 100) + '%'));
}
});
request.upload.addEventListener('load',function(event){
document.getElementById('upload_progress').style.display = 'none';
});
request.upload.addEventListener('error',function(event){
alert("failed");
});
request.open('POST','upload.php');
request.setRequestHeader('Cache-Control','no-cache');
document.getElementById('upload_progress').style.display = 'block';
};
window.addEventListener('load',function(event){
var submit = document.getElementById('submit');
submit.addEventListener('click',handleUpload);
});
html:
<div id = "upload_progress"></div>
<form id="form" action="" method="post" enctype="multipart/form-data">
<input id="file" name="file[]" type="file" multiple /><br>
<input type="submit" name="send" id ="submit" value="send">
</form>
und upload.php
if(!empty($_FILES['file'])){
foreach ($_FILES['file']['name'] as $key => $name) {
move_uploaded_file($_FILES['file']['tmp_name'][$key],"myfiles/$name");
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
haben Sie vergessen die wichtigste Zeile im javascript-code:
request.send(data);
nach diesem:
request.setRequestHeader('Cache-Control','no-cache');
Nach der
Vergessen, Daten zu senden..
BTW, müssen Sie senden die richtigen Header