Jörg Reinholz: Javascript Ajax Upload Sonderzeichen

Beitrag lesen

Moin!

Mir ist noch aufgefallen das es mit einem Safari Browser funktioniert aber mit dem Chrome nicht!

Definiere "funktioniert".

fwrite($f,"tst=" . utf8_decode( $TST ) . "\n" );

ziemlicher Unsinn. Was willst Du damit erreichen? Was das auch sei:

<?PHP
    header("Content-Type: text/html; charset=utf-8");
    if( ! empty($_GET["testData"]) ) {
         $DATA = $_GET["testData"];
    } else {
        $DATA = 'Täst';
    }
?>
<HTML>
    <HEAD>
        <SCRIPT>
            function filelistChange()  {
                var fileList = document.getElementById('fileA').files;
                var file = fileList[0];
                document.getElementById('fileinfo').innerHTML = file.type + ' - ' + parseInt(file.size/1024) + 'kb';
                document.getElementById('files_result_output').style.display = 'block';
                var formData = new FormData();
                client = new XMLHttpRequest();
                var prog = document.getElementById('progress');
                prog.value = 0;
                prog.max = 100;
                var proz = document.getElementById('prozent');
                proz.innerHTML = '0%';
                formData.append('datei', file );
                formData.append('testData', file.name );
                client.onerror = function(e) {
                    alert( e );
                };

                client.onload = function(e) {
                    proz.innerHTML = '100%';
                    prog.value = prog.max;
                    //location.href = '?action=done';
                    document.getElementById('antwort').innerHTML=client.response;
                };

                client.upload.onprogress = function(e) {
                    var p = Math.round(100 / e.total * e.loaded);
                    prog.value = p;
                    proz.innerHTML = p + '%';
                };

                client.onabort = function(e) {
                    prog.value =   0;
                    prog.max   = 100;
                    document.getElementById('prozent').innerHTML = '0%';
                };

                client.open('POST', 'uploadFile.php');
                client.send(formData);
            }
        </SCRIPT>
    </HEAD>
    <BODY>
        <FORM action='uploadFile.php'>
            <INPUT id='testData' name='testData' value='<?php echo $DATA; ?>'>
            <INPUT name="datei" type='file' id='fileA' onChange='filelistChange()'>
            <INPUT type='submit'>
                <DIV id='files_result_output' style='display:none'>
                <span id='fileinfo'></span>
                <progress id='progress'></progress> <span id='prozent'></span>
            </DIV>
            <pre id="antwort"></pre>
        </FORM>
    </BODY>
</HTML>

und die uploadFile.php:

<?php
header("Content-Type: text/html; charset=utf-8");
$FILEINFO['fileName'] = $_FILES['datei']['name'];
$FILEINFO['fileSize'] = filesize($_FILES['datei']['tmp_name']);
$FILEINFO['mimeType'] = mime_content_type($_FILES['datei']['tmp_name']);
print_r($FILEINFO);

... bringen ohne den Unsinn die zu erwarteten Ergebnisse.

Alternativ-Text

Ich habe versucht so nah wie möglich an Deinem Ausgangsskript zu bleiben. Es fehlt also jeder Versuch, mit Fehlern umzugehen.

Jörg Reinholz