Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „AJAX Fileupload - Server erhält zu große Daten“

rilight

Noch nicht viel geschrieben

Hallo liebes Forum,

ich arbeite immer noch an meinem FileUpload mit Ajax, jQuery und PHP.
Ich bin jetzt soweit, dass ich Daten vom Client an den Server übertragen kann.
Was leider nicht funktioniert, dass Daten von Clien- und Serverseite übereinstimmen.
Wie schon im Titel beschrieben, sind die Daten auf Serverseite größer.

Ich hab es bis jetzt immer mit einem Bild getestet:
Soll: 53.367 Byte
Ist: 79.034 Byte

Könnte das Problem am encoding liegen?

Mein Quellcode ist:

Client:

Hier hatte ich mit $.ajax() und $.post() experimentiert, aber bei beiden kommt das gleiche Ergebnis, die Daten sind auf dem Server zu groß.
HTML:
<!Doctype HTML>
<html>
    <head>
        <meta charset="utf-8">
        <title>Dateiupload mit Javascript</title>
        
        <style type="text/css">
            #output
            {
                width        : 350px;
                border        : 1px dotted black;
                padding        : 10px;
                margin-top    : 25px;
            }
        </style>
    </head>
    
    <body>
        <h2>Meine kleine Spielwiese</h2>
        <form id="fileUpload" action="upload.php" method="POST">
            <input type="file" name="dateien[]" id="uploadInput" multiple="multiple">
            <input type="button" value="upload starten" id="uploadStart">
        </form>
        <div id="output"></div>
        
        <!-- JavaScript Bereich -->
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.js"></script>
        <script type="text/javascript">
            $("document").ready(function() {
                
                $("#uploadStart").click(function() {
                    // input auswaehlen
                    var dateien    = $("#uploadInput")[0].files;
                    console.log(dateien);
                    
                    // groesse feststellen
                    var groesse    = dateien.length;
                    
                    // jedes Element durchgehen
                    for(var i = 0, datei = dateien[i]; i < groesse; ++i)
                    {
                        var dateiName = datei.name;
                        var reader = new FileReader();
                        reader.onload = function()
                        {
                            console.log(reader);
                            console.log(reader.result.length);
                            //console.log(reader.result);
                            /*
                            $.ajax({
                                url            :    "upload.php",
                                type        :    "POST",
                                timeout        :    5000,
                                processData    :    false, // data nicht in String konvertieren
                                data    : {
                                    "file_name"    :    dateiName,
                                    "file"        :    this.result
                                },
                                headers        : {
                                    "enctype"    :    "multipart/form-data",
                                    "encoding"    :    "multipart/form-data"
                                }
                            });
                            */
                            $.post('upload.php', {
                                file_name    :    dateiName,
                                file        :    reader.result
                            }, function( data ) {
                                $("#output").append(data);
                            });
                        }
                        reader.readAsBinaryString(datei);
                    }
                });
                
            });
        </script>
    </body>
</html>
Server:
PHP:
<?php

if( isset($_FILES['file']) )
{
    echo '$_File isset'."\n";
}
elseif( isset($_POST['file']) && isset($_POST['file_name']) )
{
    $upload_dir    = 'upload/';
    $file_name    = $_POST['file_name'];
    $file        = $_POST['file'];
    
    $handle        = fopen($upload_dir.$file, 'wb');
    fwrite($handle, $file);
    fclose($handle);
    
    echo '$_POST isset'."\n";
    echo 'strlen(file_name)'.strlen($_POST['file_name'])."\n";
    echo 'strlen(file)'.strlen($_POST['file'])."\n";
    echo 'strlen(urldecode(file))'.strlen(urldecode($_POST['file']))."\n";
}
else
{
    echo 'nothing isset'."\n";
}

?>
Außerdem merkwürdig ist, dass die Daten nicht in $_FILES sind, sondern nur in $_POST. Laut handbuch, sollten FileUploads mit POST in $_FILES stehen.

Daher meine Frage: warum kommen die Daten nicht sauber auf der Serverseite an?

Danke schon im Voraus
rilight
 

Misco

Nicht mehr ganz neu hier

AW: AJAX Fileupload - Server erhält zu große Daten

beim form tag fehlt: enctype="multipart/form-data"
Die Dateigröße auf der Festplatte ist nicht immer die tatsächliche Größe, in den Eigenschaften findet man meist 2 Angaben, evtl liegt es daran.
 

rilight

Noch nicht viel geschrieben

AW: AJAX Fileupload - Server erhält zu große Daten

@Misco

Ich hab das multipart tag noch ergänzt, aber es ändert leider nichts.
Hätte auch nicht gedacht, dass es geht, denn das Formular wird ja nicht abgeschickt.

Die Dateigröße habe ich auch nochmal nachgesehen:
53.367 Byte (57 KB auf dem Volume) laut Mac Finder
 

rilight

Noch nicht viel geschrieben

AW: AJAX Fileupload - Server erhält zu große Daten

Da wir leider keine Lösung gefunden haben, habe ich die Fragen nochmal im Apfeltalk-Forum gestellt.

Wer das Thema verfolgen möchte, kann dies gern dort tun: Link Apfeltalk.



@Moderator: Vielleicht würde es Sinn machen das Thema hier zu schließen, damit die Problemlösung nicht über 2 Foren verstreut wird?
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
175.182
Beiträge
2.582.044
Mitglieder
67.255
Neuestes Mitglied
Bitterlimoni
Oben