Во -первых, давайте возьмем визуализации:
Это код, который я сделал для большего количества фотографий в то время. Я возьму это, чтобы вы могли учиться (в некоторых местах нужно изменить ваши личности, и общее направление верно)
В общей сложности участвуют три документа (регулярно говоря)
1. Раутируйте файл ввода (I Am /routes.js здесь, и он часто находится в /App.js)
Кода -копия выглядит следующим образом:
// Добавить вкусную еду
app.all ('/add', users.add);
2. Вырастание файла контроллера (I Am /routes/users.js здесь)
Кода -копия выглядит следующим образом:
// Добавить вкусную еду
exports.add = function (req, res) {
if (req.method == "Get") {
var user = {};
if (req.session.user) {
user = req.session.user;
}
res.render ("users/food_add", {title: 'выпустить food-'+config.name, name: config.name, user: user});
} else if (req.method == "post") {
// Получить данные
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 address = req.body.address;
var title = req.body.title;
var desc = req.body.desc;
var content = req.body.content;
var pics = '';
var price = req.body.price;
var Tags = req.body.tags;
var add_time = date.parse (new Date ())/1000;
VAR Support = 0;
var uid = req.body.uid;
// Обработка загрузки изображения
//console.dir(Req.files);
var file_obj = req.files.pics;
//console.log(file_obj.length);
var file_obj2 = [];
for (var i = 0; i <file_obj.length; i ++) {
if (file_obj [i] .name) {
file_obj2.push (file_obj [i]);
}
}
var length = file_obj2.length;
if (длина> 0) {
file_obj2.foreach (function (item, index) {
if (item.path) {
var tmppath = item.path;
var type = item.type;
var extension_name = "";
// перейти к указанному каталогу и обычно помещайте его в файл публичных изображений
// Убедитесь, что путь уже существует при движении, в противном случае будет сообщена ошибка
var tmp_name = (date.parse (new Date ())/1000);
tmp_name = tmp_name+''+(math.round (math.random ()*9999));
// Судья Тип файла
Switch (type) {
case 'image/pjpeg': extension_name = 'jpg';
перерыв;
case 'image/jpeg': extension_name = 'jpg';
перерыв;
case 'image/gif': extension_name = 'gif';
перерыв;
case 'image/png': extension_name = 'png';
перерыв;
case 'image/x-png': extension_name = 'png';
перерыв;
case 'image/bmp': extension_name = 'bmp';
перерыв;
}
var tmp_name = tmp_name+'.'+extension_name;
var targetPath = 'public/images/' + tmp_name;
console.log (tmppath);
// переместить загруженный временный файл в указанный каталог
fs.rename (tmppath, targetpath, function (err) {
if (err) {
бросить ошибку;
}
if (pics) {
Pics += ',' +tmp_name;
}еще{
PICS += TMP_NAME;
}
// судить, будет ли он завершен
//console.log(index);
// Удалить временные файлы
fs.unlink (tmppath, function () {
if (err) {
бросить ошибку;
}еще{
if ((index+1) == length) {
console.log (TargetPath);
// Загрузка обработка завершена
//данные
var data = {
X: X, // долгота
Y: Y, // измерение
CAT_ID: CAT_ID, // Идентификатор категории
CAT_NAME: CAT_NAME, // Имя категории
Адрес: адрес, // адрес
Название: заголовок, // название
Desc: desc, // Введение
Контент: Контент, // Контент
фото: фото, // поле изображения, отдельные несколько картин с ','
Цена: цена, // цена
Теги: теги, // теги разделены ','
add_time: add_time, // Поддержка
Поддержка: поддержка, // поддержка по умолчанию равен 0
UID: UID // Идентификатор пользователя может быть анонимным
};
food_predao.insert (data, function (err, food) {
if (err) {
res.json ({err: 100, content: 'ошибка базы данных'});
}еще{
res.json ({err: 0, content: 'выпустить успешно!', Data: Food});
}
});
}
}
});
});
}
});
}еще{
// нет картин
//данные
var data = {
X: X, // долгота
Y: Y, // измерение
CAT_ID: CAT_ID, // Идентификатор категории
CAT_NAME: CAT_NAME, // Имя категории
Адрес: адрес, // адрес
Название: заголовок, // название
Desc: desc, // Введение
Контент: Контент, // Контент
фото: фото, // поле изображения, отдельные несколько картин с ','
Цена: цена, // цена
Теги: теги, // теги разделены ','
add_time: add_time, // Поддержка
Поддержка: поддержка, // поддержка по умолчанию равен 0
UID: UID // Идентификатор пользователя может быть анонимным
};
food_predao.insert (data, function (err, food) {
if (err) {
res.json ({err: 100, content: 'ошибка базы данных'});
}еще{
res.json ({err: 0, content: 'выпустить успешно!', Data: Food});
}
});
}
}
};
3. Просмотр файла (I Am /views/users/food_add.ejs здесь)
Кода -копия выглядит следующим образом:
<style>
.upload_item {width: 50px; Высота: 45px; переполнение: скрыта; граница: 2px пунктир #bfbfbf; float: слева; правая маржи: 10px;}
.upload_item_add {ширина: 50px; Высота: 45px; дисплей: блок; высота линии: 42px; Текст-альбом: Центр; размер шрифта: 30px; курсор: pointer;}
.upload_input {}
</style>
<Скрипт>
var add = {
upload_click: function (obj) {
$ (obj) .parent (). Children (). Eq (1) .click ();
},
upload_change: function (obj) {
var path;
path = $ (obj) .val (); // c:/документы и настройки/hud/desktop/addfile.jpg
var aa;
aa = path.split ('.');
//Alert(AA®.Length-1]); // jpg результат
var name;
name = path.split ('//');
var bb = name [name.length-1];
// alert (bb.substr (0, bb.indexof ('.'))); // Результат AddFile
$ (obj) .parent (). Children (). Eq (0) .css ('fontsize', '12px');
$ (obj) .parent (). css ('BordersTyle', 'Solid');
$ (obj) .parent (). Children (). EQ (0) .html (bb.substr (0, bb.indexof ('.')));
if ($ (obj) .parent (). attr ('index') == 1) {// добавить новый
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 (). attr ('index', '0');
}
}
};
</script>
<form method = "post" action = "/add" ectype = "Multipart/Form-Data">
<Таблица>
<tr>
<Td> долгота: </td> <td> <input type = "text" name = "x" id = "x"/> </td>
</tr>
<tr>
<Td> Dimension: </td> <td> <input type = "text" name = "y" id = "y"/> </td>
</tr>
<tr>
<Td> Категория: </td> <td> <select name = "cat_id"> <valie value = "1"> Категория 1 </option> </select> </td>
</tr>
<tr>
<TD> Адрес: </td> <td> <input type = "text" name = "address" id = "Адрес"/> </td>
</tr>
<tr>
<TD> Название: </td> <td> <input type = "text" name = "title" id = "title"/> </td>
</tr>
<tr>
<TD> Введение: </td> <td> <input type = "text" name = "desc" id = "desc"/> </td>
</tr>
<tr>
<TD> Содержание: </td> <td> <input type = "text" name = "content" id = "content"/> </td>
</tr>
<tr>
<Td> изображение: </td> <td id = "upload_box"> <div index = "0" style = "display: none;"> <span onclick = "add.upload_click (this)">+</span> <input type = "файл" name = "pics" id = "pics" onchange = "add.upload_chrage (это)"/"</> </=" </> </= "</=" </> </= "</> </=" </> </= "</> </=" </> </= "</=" </= ". onclick = "add.upload_click (this)">+</span> <input type = "file" name = "pics" id = "pics" onchange = "add.upload_change (this)"/> </div> </td>
</tr>
<tr>
<TD> цена: </td> <td> <input type = "text" name = "цена" id = "цена"/> </td>
</tr>
<tr>
<td> теги: </td> <td> <input type = "text" name = "Tags" id = "Теги"/> </td>
</tr>
<tr>
<td colspan = "2"> <input type = "Отправить" value = "pospent" /> < /td>
</tr>
</table>
</form>