Dateiupload mit AJAX (und normale Übergabe von Daten an PHP)

Sinthores

Grünschnabel
Hallo,

ich habe eine HTML Form mit meheren input Feldern und einem Upload.
Diese möchte ich mit einem PHP Skript in eine DB schreiben bzw hochladen.
Nun kommt die Dateivariable im PHP Skript nicht an. (Der Rest schon.)
Ich übergabe die Daten an PHP mit einer AJAX Funktion.


PHP:
$file = $_FILES['file'];

HTML:
<form id="Speichern" enctype="multipart/form-data" method="post">

Javascript:
$('#Speichern').on('submit', function (e) {
              change_form = "submit";
              e.preventDefault();
              $.ajax({
                type: 'post',
                url: Db_ziel_pfad,
                data: $('form').serialize(),
                success: function (data) {
                  alert(data);
                }
              });
            });



Nun ich schätze das das Input Feld nicht übergeben wird.

Kann mir jemand helfen und sagen wir ich die Ajax Funktion anpassen muss?

Vielen Dank!
 
Hast du dir denn die vom php Script empfangenen POST Daten schon mal anzeigen lassen? Also mit print_r($_POST) ausgeben und anschließend wird dir die data Rückgabe eh angezeigt. Wenn da der Upload nicht angezeigt wird, geht der definitiv unterwegs verloren.

Ich mache das inzwischen so, daß ich keine normalen Upload Felder mehr verwende, sondern die tatsächlich asynchron arbeitenden Uploads. Zum einen haben die meist eine Fortschrittsanzeige dabei, zum anderen kann man per drag'n'drop gleich mehrere Dateien hochladen. Ist für den User deutlich komfortabler. Und du selbst tust dich leichter, wenn du Einschränkungen bzgl. Dateityp oder Größe hast, da die oftmals schon vor dem Upload geprüft werden.

Wenn du den Dateinamen änderst und vorher schon weißt, kannst du den Upload schon verarbeiten, bevor das Formular abgeschickt wird. Ansonsten nimmst du selbst definierte temporäre Namen und verarbeitest die Dateien später.
 

Neue Beiträge

Zurück