hotti: Request Content-Type Header bei Upload

Beitrag lesen

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>