2 Stimmen

Laden Sie Datei mit einem Formular über Ajax Node.js Express hoch

Das ist die Ajax-Datei

$(form).submit(function()
            {
                $.ajax(
                {
                    url:'/newProduct',
                    cache: false,
                    type: 'POST',
                    data: $(form).serialize(),
                    success:function(datos)
                    {
                        console.dir(datos)
                    },
                    error:function(xhr,tm)
                    {

                    },
                    complete:function()
                    {
                        form.reset();

                    }
                })
return false        

            });

das auf dem Server

exports.newProduct=function(req,res)
{
    console.dir(req.body)
    console.dir(req.files)
    return res.send('Produkt erfolgreich geladen.');
}

Die Datei wurde nicht hochgeladen, die Informationen auf dem Server zeigen nichts an, es ist nichts passiert

3voto

Femi Punkte 63590

Soweit ich das verstehe, können Sie $.ajax nicht verwenden, um eine Formularübermittlung im Format multipart/form-data durchzuführen (nicht ohne den POST-Body manuell zu erstellen). Der Express-Datei-Upload erfordert, dass Ihr HTML-

-Element das Attribut enctype="multipart/form-data" hat. Haben Sie es eingestellt?

Für das, was Sie versuchen zu tun, möchten Sie wahrscheinlich ein verstecktes iframe verwenden, um den Post durchzuführen, und dann den Server einen JavaScript-Schnipsel zurückgeben lassen, der bei Erfolg/Misserfolg zurückruft. Es gibt eine Reihe von jQuery-Plugins, die dies für Sie tun (jQuery Form macht es, glaube ich).

1voto

Alon Valadji Punkte 608

Nur mit dem HTML5-FormData-Objekt und manuelles Anhängen von Dateien:

Neue Tricks in XMLHttpRequest2

Dateien mit Ajax hochladen

Sie können auch ein schönes jQuery-Plugin verwenden, z.B. mit Fallback etc.:

jQuery File Upload

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X