hi Jörg,
Daneben fällt mir auf, dass formData jedenfalls auch dann einen leeren Eintrag für eine Datei sendet, denn gar keine ausgewählt wurde:
Es wird auf jeden Fall der Enctype gesendet. Worauf es ankommt und ein Perl/CGI-Script.
Mit onSubmit="return false" oder true kannst Du den Modus wechseln, CGI oder Ajax.
Dasselbe in PHP, ja, wie Du selbst anmerkst, die [] nicht vergessen:
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' ){
if( isset($_SERVER['HTTP_X_REQUEST']) ){
echo print_r($_FILES, 1);
}
else{
echo "<pre>", print_r($_FILES, 1), "</pre>";
}
exit;
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Upload Multiple</title>
</head>
<body>
<h1>Upload Multiple</h1>
<form action="<?php echo $_SERVER['SCRIPT_NAME'] ?>" method="POST" Enctype="multipart/form-data" onSubmit="return false">
<fieldset> <legend>Die Auswahl mehrerer Dateien ist zulässig:</legend>
<input type="file" name="file[]" multiple>
<button onClick="xup(this.form, caba)"> Auffi gehts! </button>
</fieldset>
</form>
<pre id="out"> Hier stehts Ergebnis </pre>
<script>
// Upload mit Ajax
function xup(form, caba){
var form_data = new FormData(form);
var xhr = new XMLHttpRequest();
xhr.open("POST", "<?php echo $_SERVER['SCRIPT_NAME'] ?>", true);
xhr.setRequestHeader("x-request", "ajax");
// Zur Unterscheidung Request
xhr.send(form_data);
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
if(xhr.status == 200){
caba(xhr.response);
}
}
};
}
// Ajax CallBack
function caba(response){
document.getElementById('out').innerHTML = response;
}
</script>
</body></html>