2016-05-09 2 views
2

Ich baue eine Website, wo Benutzer ein Formular mit Informationen wie Vorname, Nachname, Profilbild, Nummer usw. ausfüllen muss ... Ich habe kodiere bereits das Formular und ich suche einen Weg mit dem Knoten js, um das Bild in ein bestimmtes Verzeichnis (oder ein Standardverzeichnis) hochzuladen und die Informationen zu speichern, die die Benutzer in meine Datenbank eingetragen haben. Ich benutze Knoten js und Express mit mysql.Datei mit Knoten js hochladen und Formularinformationen in Datenbank speichern (mysql)

UPDATE:

(I verwenden gewaltiges Paket und util-Paket). Bitte beachten Sie, dass ich für den Bildteil nur den Pfad benötige (Sie sehen es auf der Ausgabeseite).

Formularcode:

<form method="post" action="upload" enctype="multipart/form-data"> 
    <fieldset> 
     <input type="file" accept="image/*" name="image" required /><br/> 
     <label for="Prenom">Prénom: </label> 
     <input type="text" name="user_prenom" id="Prenom" required /><br/> 
     <label for="Nom">Nom: </label> 
     <input type="text" name="user_nom" id="Nom" required /><br/> 
     <label for="Mail">E-Mail: </label> 
     <input type="email" name="user_mail" id="Mail" required/><br/> 
     <label for="Pays">Pays: </label> 
     <input type="text" name="user_pays" id="Pays" required/><br/> 
     <label for="Ville">Ville: </label> 
     <input type="text" name="user_ville" id="Ville" required/><br/> 
     <label for="Num">Numéro: </label> 
     <input type="tel" name="user_telephone" id="Num" /><br/> 
     <input type="submit" /> 
    </fieldset> 
</form> 

Griff:

router.post('/upload', function(req, res) { 
processFormFieldsIndividual(req, res); 
}); 

function processFormFieldsIndividual(req, res) { 
//Store the data from the fields in your data store. 
//The data store could be a file or database or any other store based 
//on your application. 
var fields = []; 
var form = new formidable.IncomingForm(); 
form.uploadDir = "/public/photo_utilisateurs"; 
//Call back when each field in the form is parsed. 
form.on('field', function (field, value) { 
    fields[field] = value; 
}); 
//Call back when each file in the form is parsed. 
form.on('file', function (name, file) { 
    fields[name] = file; 
    //Storing the files meta in fields array. 
    //Depending on the application you can process it accordingly. 
}); 

//Call back for file upload progress. 
form.on('progress', function (bytesReceived, bytesExpected) { 
    var progress = { 
     type: 'progress', 
     bytesReceived: bytesReceived, 
     bytesExpected: bytesExpected 
    }; 
    //Logging the progress on console. 
    //Depending on your application you can either send the progress to client 
    //for some visual feedback or perform some other operation. 
}); 

//Call back at the end of the form. 
form.on('end', function() { 

    res.writeHead(200, { 
     'content-type': 'text/plain' 
    }); 
    res.write('received the data:\n\n'); 
    res.end(util.inspect({ 
     fields: fields 
    })); 
}); 
// var user = JSON.parse(fields); 
// connection.query('INSERT INTO Utilisateurs (user_nom, user_prenom, user_mail, user_phone, user_pays, user_ville) VALUES ("' + user.user_nom + '", "' + user.user_prenom + '", "' + user.user_mail + '", "' + user.user_pays + '", "' + user.user_ville + '", "' + user.user_telephone + '")', 
//  function selectCb(err, results, fields) { 
//   if (err) throw err; 
//   else res.send('success'); 
// }); 
form.parse(req); 
} 

Der Output

die Daten empfangen:

{ fields: 
    [ user_prenom: 'dfw', 
     user_nom: 'efwe', 
     user_mail: '[email protected]', 
     user_pays: 'efwe', 
     user_ville: 'efwe', 
     user_telephone: '4380564324', 
     image: File { 
     domain: null, 
     _events: {}, 
     _eventsCount: 0, 
     _maxListeners: undefined, 
     size: 518, 
     path: '/tmp/upload_e611ea0745206682b26c208d816dc604', 
     name: '1462507431_play_now_sign_youtube_video.svg', 
     type: 'image/svg+xml', 
     hash: null, 
     lastModifiedDate: Mon May 09 2016 00:16:24 GMT-0400 (EDT), 
    _writeStream: [Object] } 
    ] 
    } 
+1

u kann den Code Ihrer Form und Form Handeling zeigt –

+0

gibt mir sicher, 5 Minuten bitte – anonym

+0

es jetzt – anonym

Antwort

2

Sie können einfach die Variable Global deklarieren und ihr die Form fileds zuweisen. Und benutze es wo du willst.

var data = util.inspec({ 
    data: fields 
     }); 
    console.log(data); 
    }); 
0
form.on('end', function() { 

    res.writeHead(200, { 
     'content-type': 'text/plain' 
    }); 
    res.write('received the data:\n\n'); 


    // console.log(fields.name+'-'+fields.nickname); 
    var values={ 
      name:fields.name, 
      nickname:fields.nickname, 
      email:fields.email, 
      password:fields.password, 
      dob:fields.dob, 
      gender:fields.gender, 
      phoneno:fields.phone 
     }; 

    connection.query('INSERT INTO users SET ?', values, function(err,req,res){ 
         if(err){ 
          console.log('Connection result error '+err); 

         } 
          else{ 
         console.log('Success');  

          } 
       }); 

       res.end(); 
}); 
+0

Um die Formularfelder von Ajax + Jquery zu Nodejs zu lesen und in MySQL DB zu speichern –

Verwandte Themen