ครั้งแรกการเรนเดอร์:
นี่คือรหัสที่ฉันสร้างขึ้นสำหรับรูปภาพเพิ่มเติมในเวลานั้น ฉันจะนำมันออกไปเพื่อให้คุณเรียนรู้จาก (บางสถานที่จำเป็นต้องได้รับการแก้ไขโดยข้อมูลส่วนบุคคลของคุณเองและทิศทางทั่วไปถูกต้อง)
มีเอกสารสามฉบับที่เกี่ยวข้องทั้งหมด (พูดเป็นประจำ)
1. ไฟล์รายการ Route (ฉันเป็น /routes.js ที่นี่และมักจะอยู่ใน /App.js)
การคัดลอกรหัสมีดังนี้:
// เพิ่มอาหารอร่อย
app.all ('/add', users.add);
2. ไฟล์คอนโทรลเลอร์ (ฉันเป็น /routes/users.js ที่นี่)
การคัดลอกรหัสมีดังนี้:
// เพิ่มอาหารอร่อย
exports.add = function (req, res) {
if (req.method == "รับ") {
var user = {};
if (req.session.user) {
ผู้ใช้ = req.session.user;
-
res.render ("ผู้ใช้/food_add", {title: 'release food-'+config.name, ชื่อ: config.name, ผู้ใช้: ผู้ใช้});
} อื่นถ้า (req.method == "โพสต์") {
// รับข้อมูล
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 = req.body.address;
title var = req.body.title;
var desc = req.body.desc;
var content = req.body.content;
var pics = '';
var price = req.body.price;
tags var = req.body.tags;
var add_time = date.parse (วันที่ใหม่ ())/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 = [];
สำหรับ (var i = 0; i <file_obj.length; i ++) {
if (file_obj [i] .name) {
file_obj2.push (file_obj [i]);
-
-
var length = file_obj2.length;
ถ้า (ความยาว> 0) {
file_obj2.foreach (ฟังก์ชั่น (รายการ, ดัชนี) {
ถ้า (item.Path) {
var tmppath = item.path;
var type = item.type;
var extension_name = "";
// ย้ายไปยังไดเรกทอรีที่ระบุและมักจะวางไว้ใต้ไฟล์ภาพสาธารณะ
// ตรวจสอบให้แน่ใจว่าเส้นทางมีอยู่แล้วเมื่อเคลื่อนที่มิฉะนั้นจะมีการรายงานข้อผิดพลาด
var tmp_name = (date.parse (วันที่ใหม่ ())/1000);
tmp_name = tmp_name+''+(math.round (math.random ()*9999));
// ผู้ตัดสินประเภทไฟล์
สวิตช์ (พิมพ์) {
กรณี 'image/pjpeg': extension_name = 'jpg';
หยุดพัก;
กรณี 'image/jpeg': extension_name = 'jpg';
หยุดพัก;
กรณี 'image/gif': extension_name = 'gif';
หยุดพัก;
กรณี 'รูปภาพ/png': extension_name = 'png';
หยุดพัก;
กรณี 'image/x-png': extension_name = 'png';
หยุดพัก;
กรณี 'รูปภาพ/bmp': extension_name = 'bmp';
หยุดพัก;
-
var tmp_name = tmp_name+'.'+extension_name;
var targetPath = 'สาธารณะ/รูปภาพ/' + tmp_name;
console.log (tmppath);
// ย้ายไฟล์ชั่วคราวที่อัปโหลดไปยังไดเรกทอรีที่ระบุ
fs.rename (tmppath, targetpath, ฟังก์ชั่น (err) {
ถ้า (err) {
โยนเอ่อ;
-
ถ้า (ภาพ) {
pics += ',' +tmp_name;
}อื่น{
pics += tmp_name;
-
// ตัดสินว่าจะเสร็จสมบูรณ์หรือไม่
//console.log(index);
// ลบไฟล์ชั่วคราว
fs.unlink (tmppath, function () {
ถ้า (err) {
โยนเอ่อ;
}อื่น{
ถ้า ((ดัชนี+1) == ความยาว) {
console.log (TargetPath);
// การประมวลผลอัปโหลดเสร็จสมบูรณ์
//ข้อมูล
var data = {
x: x, // ลองจิจูด
y: y, // dimension
cat_id: cat_id, // หมวดหมู่รหัส
cat_name: cat_name, // ชื่อหมวดหมู่
ที่อยู่: ที่อยู่ // ที่อยู่
ชื่อเรื่อง: ชื่อ // ชื่อ
DESC: DESC, // บทนำ
เนื้อหา: เนื้อหา // เนื้อหา
ภาพ: ภาพ, // ฟิลด์รูปภาพ, แยกหลายภาพด้วย ',', '
ราคา: ราคา // ราคา
แท็ก: แท็ก, // แท็กถูกคั่นด้วย ',', '
add_time: add_time, // สนับสนุน
การสนับสนุน: การสนับสนุน // การสนับสนุนเริ่มต้นคือ 0
UID: UID // ID ผู้ใช้สามารถไม่ระบุชื่อ
-
food_predao.insert (ข้อมูล, ฟังก์ชั่น (err, อาหาร) {
ถ้า (err) {
res.json ({err: 100, เนื้อหา: 'ข้อผิดพลาดฐานข้อมูล'});
}อื่น{
res.json ({err: 0, เนื้อหา: 'ปล่อยสำเร็จ!', ข้อมูล: อาหาร});
-
-
-
-
-
-
-
-
}อื่น{
// ไม่มีภาพ
//ข้อมูล
var data = {
x: x, // ลองจิจูด
y: y, // dimension
cat_id: cat_id, // หมวดหมู่รหัส
cat_name: cat_name, // ชื่อหมวดหมู่
ที่อยู่: ที่อยู่ // ที่อยู่
ชื่อเรื่อง: ชื่อ // ชื่อ
DESC: DESC, // บทนำ
เนื้อหา: เนื้อหา // เนื้อหา
ภาพ: ภาพ, // ฟิลด์รูปภาพ, แยกหลายภาพด้วย ',', '
ราคา: ราคา // ราคา
แท็ก: แท็ก, // แท็กถูกคั่นด้วย ',', '
add_time: add_time, // สนับสนุน
การสนับสนุน: การสนับสนุน // การสนับสนุนเริ่มต้นคือ 0
UID: UID // ID ผู้ใช้สามารถไม่ระบุชื่อ
-
food_predao.insert (ข้อมูล, ฟังก์ชั่น (err, อาหาร) {
ถ้า (err) {
res.json ({err: 100, เนื้อหา: 'ข้อผิดพลาดฐานข้อมูล'});
}อื่น{
res.json ({err: 0, เนื้อหา: 'ปล่อยสำเร็จ!', ข้อมูล: อาหาร});
-
-
-
-
-
3. ดูไฟล์ (ฉันเป็น/views/users/food_add.ejs ที่นี่)
การคัดลอกรหัสมีดังนี้:
<style>
.UPLOAD_ITEM {WIDTH: 50PX; ความสูง: 45px; ล้น: ซ่อนเร้น; ชายแดน: 2px ประ #BFBFBF; ลอย: ซ้าย; มาร์จิ้น-ขวา: 10px;}
.UPLOAD_ITEM_ADD {WIDTH: 50PX; ความสูง: 45px; แสดง: บล็อก; ความสูงของสาย: 42px; TEXT-ALIGN: CENTER; ขนาดตัวอักษร: 30px; เคอร์เซอร์: ตัวชี้;}
.upload_input {}
</style>
<script>
var add = {
upload_click: ฟังก์ชั่น (obj) {
$ (obj) .parent (). เด็ก ๆ (). eq (1). click ();
-
upload_change: ฟังก์ชั่น (obj) {
เส้นทาง var;
path = $ (obj) .val (); // C:/เอกสารและการตั้งค่า/hud/desktop/addfile.jpg
var aa;
aa = path.split ('.');
//alert(aa [aa.length -1]); // ผล jpg
ชื่อ var;
name = path.split ('//');
var bb = name [name.length-1];
// Alert (bb.substr (0, bb.indexof ('.'))); // ผล addfile
$ (obj) .parent (). เด็ก (). eq (0) .css ('fontsize', '12px');
$ (obj) .parent (). CSS ('Borderstyle', 'Solid');
$ (obj) .parent (). เด็ก (). eq (0) .html (bb.substr (0, bb.indexof ('.')));
if ($ (obj) .parent (). attr ('index') == 1) {// เพิ่มใหม่
var html = '<div index = "1"> <span onclick = "add.upload_click (นี่)">+</span> <อินพุต type = "file" name = "pics" id = "pics" onchange = "add.upload_change
$ ('#upload_box') ผนวก (html);
$ (obj) .parent (). attr ('ดัชนี', '0');
-
-
-
</script>
<form method = "post" action = "/เพิ่ม" enctype = "multipart/form-data">
<table>
<tr>
<td> ลองจิจูด: </td> <td> <อินพุต type = "text" name = "x" id = "x"/> </td>
</tr>
<tr>
<td> มิติ: </td> <td> <อินพุต type = "text" name = "y" id = "y"/> </td>
</tr>
<tr>
<td> หมวดหมู่: </td> <td> <เลือกชื่อ = "cat_id"> <ตัวเลือกค่า = "1"> หมวดหมู่ 1 </ตัวเลือก> </select> </td>
</tr>
<tr>
<td> ที่อยู่: </td> <td> <อินพุต type = "text" name = "address" id = "address"/> </td>
</tr>
<tr>
<td> title: </td> <td> <อินพุต type = "text" name = "title" id = "title"/> </td>
</tr>
<tr>
<td> บทนำ: </td> <td> <อินพุต type = "text" name = "desc" id = "desc"/> </td>
</tr>
<tr>
<td> เนื้อหา: </td> <td> <อินพุต type = "text" name = "content" id = "เนื้อหา"/> </td>
</tr>
<tr>
<td> รูปภาพ: </td> <td id = "upload_box"> <div index = "0" style = "แสดง: ไม่มี;"> <span onclick = "add.upload_click (นี่)">+</span> <อินพุตประเภท = "ไฟล์" onclick = "add.upload_click (this)">+</span> <อินพุต type = "file" name = "pics" id = "pics" onchange = "add.upload_change (นี่)"/> </div> </td>
</tr>
<tr>
<td> ราคา: </td> <td> <อินพุต type = "text" name = "price" id = "ราคา"/> </td>
</tr>
<tr>
<td> แท็ก: </td> <td> <อินพุต type = "text" name = "tags" id = "tags"/> </td>
</tr>
<tr>
<td colspan = "2"> <อินพุต type = "ส่ง" value = "ส่ง" /> </td>
</tr>
</table>
</form>