Tout d'abord, prenons les rendus:
C'est le code que j'ai fait pour plus de photos à ce moment-là. Je vais le retirer pour que vous appreniez (certains endroits doivent être modifiés par vos propres personnalités, et la direction générale est correcte)
Il y a trois documents impliqués dans le total (régulièrement parlant)
1. Fichier d'entrée de type (je suis /routes.js ici, et il est souvent dans /App.js)
La copie de code est la suivante:
// Ajouter de la nourriture délicieuse
app.all ('/ add', users.add);
2. Fichier de contrôleur de rompre (je suis /routes/users.js ici)
La copie de code est la suivante:
// Ajouter de la nourriture délicieuse
export.add = fonction (req, res) {
if (req.method == "get") {
var user = {};
if (req.Session.User) {
user = req.Session.User;
}
res.render ("users / food_add", {title: 'release food -' + config.name, name: config.name, utilisateur: utilisateur});
} else if (req.method == "post") {
// Obtenez des données
var x = req.body.x;
var y = req.body.y;
var cat_id = req.body.cat_id;
var cat_name = req.body.cat_name;
var adresse = req.body.address;
var title = req.body.title;
var desc = req.body.desc;
var content = req.body.content;
var pics = '';
var prix = req.body.price;
var tags = req.body.tags;
var add_time = date.parse (new Date ()) / 1000;
var support = 0;
var uid = req.body.uid;
// Traitement du téléchargement d'image
//console.dir(req.files);
var file_obj = req.files.pics;
//console.log(file_obj.length);
var file_obj2 = [];
pour (var i = 0; i <file_obj.length; i ++) {
if (file_obj [i] .name) {
file_obj2.push (file_obj [i]);
}
}
var longueur = file_obj2.length;
if (longueur> 0) {
file_obj2.ForEach (fonction (item, index) {
if (item.path) {
var tmpppath = item.path;
var type = item.type;
var extension_name = "";
// Passez au répertoire spécifié et mettez-le généralement sous le fichier d'images publiques
// Assurez-vous que le chemin existe déjà lors du déménagement, sinon une erreur sera signalée
var tmp_name = (date.parse (new Date ()) / 1000);
tmp_name = tmp_name + '' + (math.round (math.random () * 9999));
// Type de dossier de juge
commutateur (type) {
case 'image / pjpeg': extension_name = 'jpg';
casser;
case 'image / jpeg': extension_name = 'jpg';
casser;
case 'image / gif': extension_name = 'gif';
casser;
case 'image / png': extension_name = 'png';
casser;
case 'image / x-png': extension_name = 'png';
casser;
case 'image / bmp': extension_name = 'bmp';
casser;
}
var tmp_name = tmp_name + '.' + extension_name;
var ciblePath = 'public / images /' + tmp_name;
Console.log (TMPPATH);
// déplace le fichier temporaire téléchargé dans le répertoire spécifié
fs.rename (tmpppath, ciblePath, fonction (err) {
if (err) {
lancer err;
}
if (photos) {
pics + = ',' + tmp_name;
}autre{
pics + = tmp_name;
}
// juger s'il est terminé
//console.log(Index);
// Supprimer les fichiers temporaires
fs.unlink (tmpppath, function () {
if (err) {
lancer err;
}autre{
if ((index + 1) == longueur) {
Console.log (TargetPath);
// Le traitement de téléchargement est terminé
//données
var data = {
x: x, // longitude
y: y, // dimension
Cat_id: Cat_id, // ID de catégorie
cat_name: cat_name, // nom de catégorie
Adresse: adresse, // adresse
Titre: Titre, // Titre
Desc: desc, // Introduction
Contenu: Contenu, // Contenu
Photos: photos, // champ d'image, séparez plusieurs images avec ','
Prix: Prix, // Prix
Tags: tags, // Les balises sont séparées par ','
add_time: add_time, // support
Prise en charge: support, // La prise en charge par défaut est 0
UID: UID // L'ID utilisateur peut être anonyme
};
aliments_predao.insert (données, fonction (err, aliments) {
if (err) {
res.json ({err: 100, contenu: 'error de base de données'});
}autre{
res.json ({err: 0, contenu: 'release réussi!', data: aliments});
}
});
}
}
});
});
}
});
}autre{
// pas de photos
//données
var data = {
x: x, // longitude
y: y, // dimension
Cat_id: Cat_id, // ID de catégorie
cat_name: cat_name, // nom de catégorie
Adresse: adresse, // adresse
Titre: Titre, // Titre
Desc: desc, // Introduction
Contenu: Contenu, // Contenu
Photos: photos, // champ d'image, séparez plusieurs images avec ','
Prix: Prix, // Prix
Tags: tags, // Les balises sont séparées par ','
add_time: add_time, // support
Prise en charge: support, // La prise en charge par défaut est 0
UID: UID // L'ID utilisateur peut être anonyme
};
aliments_predao.insert (données, fonction (err, aliments) {
if (err) {
res.json ({err: 100, contenu: 'error de base de données'});
}autre{
res.json ({err: 0, contenu: 'release réussi!', data: aliments});
}
});
}
}
};
3. Afficher le fichier (je suis /Views/users/food_add.ejs ici)
La copie de code est la suivante:
<style>
.upload_item {width: 50px; hauteur: 45px; Overflow: Hidden; Border: 2px anonté #bfbfbf; Float: à gauche; marge-droite: 10px;}
.upload_item_add {width: 50px; hauteur: 45px; Affichage: bloc; hauteur de ligne: 42px; Texte-aligne: Centre; taille de police: 30px; curseur: pointeur;}
.upload_input {}
</ style>
<cript>
var add = {
upload_click: function (obj) {
$ (obj) .parent (). enfants (). Eq (1) .Click ();
},
upload_change: fonction (obj) {
Var Path;
path = $ (obj) .val (); // c: / documents et paramètres / HUD / Desktop / addFile.jpg
var aa;
aa = path.split ('.');
//alelert(aa[aa.length-1]); // Résultat JPG
var name;
name = path.split ('//');
var bb = name [name.length-1];
// alert (bb.substr (0, bb.indexof ('.'))); // Résultat d'addition
$ (obj) .parent (). Enfants (). Eq (0) .Css ('Fontize', '12px');
$ (obj) .parent (). CSS («Borderstyle», «solide»);
$ (obj) .parent (). enfants (). Eq (0) .html (bb.substr (0, bb.indexof ('.')));
if ($ (obj) .parent (). attr ('index') == 1) {// ajouter nouveau
var html = '<div index = "1"> <span onclick = "add.upload_click (this)"> + </span> <input type = "file" name = "pics" id = "pics" onchange = "add.upload_change (this)" /> </ div>';
$ ('# upload_box'). append (html);
$ (obj) .parent (). att ('index', '0');
}
}
};
</cript>
<form mode méthode = "post" action = "/ add" enctype = "multipart / form-data">
<ballage>
<tr>
<td> longitude: </td> <td> <Type de saisie = "Text" name = "x" id = "x" /> </td>
</tr>
<tr>
<td> Dimension: </td> <td> <Type de saisie = "Text" Name = "Y" ID = "Y" /> </td>
</tr>
<tr>
<td> Catégorie: </td> <td> <select name = "cat_id"> <option value = "1"> catégorie 1 </ option> </lect> </td>
</tr>
<tr>
<td> Adresse: </td> <td> <entrée type = "text" name = "adresse" id = "adresse" /> </td>
</tr>
<tr>
<td> Title: </td> <td> <input type = "text" name = "title" id = "title" /> </td>
</tr>
<tr>
<Td> Introduction: </td> <td> <entrée type = "text" name = "desc" id = "desc" /> </td>
</tr>
<tr>
<td> Contenu: </td> <td> <input type = "text" name = "contenu" id = "contenu" /> </td>
</tr>
<tr>
<td> image: </td> <td id = "upload_box"> <div index = "0" style = "display: non;"> <spann onclick = "add.upload_click (this)"> + </span> <entrée type = "file" name = "pics" id = "pics" onchange = "add.upload_change (this)" /> </v> onClick = "add.upload_click (this)"> + </span> <input type = "file" name = "pics" id = "pics" onchange = "add.upload_change (this)" /> </ div> </td>
</tr>
<tr>
<td> Prix: </td> <td> <entrée type = "text" name = "prix" id = "prix" /> </td>
</tr>
<tr>
<TD> TAGS: </td> <td> <Type d'entrée = "Text" name = "Tags" id = "tags" /> </td>
</tr>
<tr>
<td colspan = "2"> <input type = "soumi" value = "soumi" /> </td>
</tr>
</ table>
</ form>