博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node.js,后台数据创建相册form表单上传图片
阅读量:4146 次
发布时间:2019-05-25

本文共 4662 字,大约阅读时间需要 15 分钟。

form表单上传图片

在这里插入图片描述

app.js

//express  ejs   formidable  var express = require('express');var app = express();var router = require('./router');var path = require('path');var bodyParser = require('body-parser');app.use(bodyParser.urlencoded({ extended: false }));//设置post请求的编码方式//设置ejs为模板引擎app.set('view engine','ejs');//可以把上传的图片的目录 设置为静态资源app.use(express.static(path.join(__dirname,'upload')));//一般情况下  我们并不会在入口文件中写业务代码//渲染首页app.get('/',router.index);//上传相册页app.get('/uploadPic',router.uploadPic);//创建相册页app.get('/mkPic',router.mkPic);//相册详情页  可以通过路由传参的方式  来去知道当前页面应该显示哪些内容app.use('/picDetails',router.picDetails);//app.get('/picDetails/:id',router.picDetails);//相册名称的接口app.get('/getPicName',router.getPicName);//创建相册名称的接口app.post('/createPicName',router.createPicName);//上传图片的接口app.post('/uploadppic',router.uploadppic);app.use('*',router.err)//匹配404页面app.listen(3001,function () {	console.log('服务器已启动。。。')})

router.js

var fs = require('fs');var queryString = require('querystring');var formidable = require('formidable');var timeStamp = require('time-stamp');var path = require('path');var tips = require('./tipsConfig')//首页的渲染exports.index = function (req,res) {	//查找到相应的数据obj	fs.readdir('./upload',function (err,arr) {		if(err){			throw err;		}		console.log(arr)		//ejs模板的数据  对象的格式  {key:val}		res.render('index',{arr:arr});		//{arr:[ '美女', '美女0', '美女1', '美女123', '默认相册' ]}	})	//res.render('index');}//uploadPicexports.uploadPic = function (req,res) {	fs.readdir('./upload',function (err,arr) {		if(err){			throw err;		}		console.log(arr)		//ejs模板的数据  对象的格式  {key:val}		res.render('uploadPic',{arr:arr});		//res.render('index',{arr:arr});		//{arr:[ '美女', '美女0', '美女1', '美女123', '默认相册' ]}	})	}//mkPicexports.mkPic = function (req,res) {	res.render('mkPic');}//picDetails  use中间件//  /picDetails/默认相册exports.picDetails = function (req,res) {	//req.path  拿到后面所传递的参数    默认相册      /默认相册	//req.path	var obj;	var path = queryString.unescape(req.path);	console.log(path);//   /美女	fs.readdir('./upload'+path,function (err,arr) {		if(err){			throw err;		}		console.log(arr);//[ '02 - 副本.jpg', '02.jpg' ]		obj = {			path:path,			arr:arr		}		res.render('picDetails',obj);	})	//ejs模板中 需要  相册的具体目录  还有该目录下所有图片	//数据  对象  {}	}//getPicName  接口exports.getPicName = function (req,res) {	fs.readdir('./upload',function (err,arr) {		if(err){			throw err;		}		console.log(arr);		//后台.send  发送给前端  是一个json数据的时候 		//那么这个get路由请求  就是给前端的一个接口来的		res.send(arr);	})}//createPicNameexports.createPicName = function (req,res) {	console.log(req.body)//{ picName: '美女' }	//判断当前想要创建的目录 是否已经存在	fs.exists('./upload/'+req.body.picName,function (isMake) {		if(isMake){			console.log('当前相册名称已经存在,不允许重复创建')			//res.render('msg')			res.send('不成功')		}else{			console.log('当前相册名称不存在,允许创建')			fs.mkdir('./upload/'+req.body.picName,function (err) {				if(err){					throw err;				}				console.log('目录已经成功创建')				res.send('成功')				//res.render('msg')			})					}	})}//uploadppicexports.uploadppic = function (req,res) {	var form = new formidable.IncomingForm(); 	form.uploadDir = "./uploadBAck";//定义上传图片的路径 	form.keepExtensions = true;//是否保留扩展名 	//fields  非文件数据 	//files  文件数据来的    form.parse(req, function(err, fields, files) {      console.log(fields.picName);//{ picName: '美女' }      console.log(files);      console.log(files.upPic.path);//一开始存放图片的地址      //uploadBAck\upload_e6acd623e4bc0432304ca4682af605d6.jpg      //fs.rename()      //时间戳+随机数+扩展名      var time = timeStamp('YYYYMMDD');      var ran = parseInt(Math.random()*4578475 + 329473847);      var ext = path.extname(files.upPic.path);           // console.log(time+ran+ext);新的名字     var oldName = path.join(__dirname,files.upPic.path);     var newName = path.join(__dirname,'upload',fields.picName,time+ran+ext);     fs.rename(oldName,newName,function (err) {     	if(err){     		throw err;     	}     	console.log('成功上传图片');     	//res.send('您已经成功上传了图片')     	res.render('tips',tips.tips.upSuc);     })         });}//errexports.err = function (req,res) {	res.status(404).render('tips',tips.tips.err);}

tipsconfig.js

exports.tips = {	err:{		msg:'404,当前页面不存在',		path:'/',		text:'首页'	},	upSuc:{		msg:'上传成功',		path:'/',		text:'首页'	}}

index.ejs

						

首页

上传 创建相册

相册列表

<% for(var i=0;i
<%= arr[i] %> <% } %>

mkpic.ejs

		

创建相册

相册名称:

picDetails.ejs

				

相册详情

<% for(var i=0;i
<% } %> <% if(arr.length == 0){ %>
当前相册还没有上传图片 <% } %>

tips.ejs

		<%= msg %>,3秒后自动返回首页		

uploadpic.ejs

		

上传相册

选择上传的相册名:

转载地址:http://wwcti.baihongyu.com/

你可能感兴趣的文章
论文翻译:《一个包容性设计的具体例子:聋人导向可访问性》
查看>>
基于“分形”编写的交互应用
查看>>
《融入动画技术的交互应用》主题博文推荐
查看>>
链睿和家乐福合作推出下一代零售业隐私保护技术
查看>>
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>
Piper Sandler为EverArc收购Perimeter Solutions提供咨询服务
查看>>
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
异常 Java学习Day_15
查看>>
Mysql初始化的命令
查看>>
MySQL关键字的些许问题
查看>>
浅谈HTML
查看>>
css基础
查看>>
Servlet进阶和JSP基础
查看>>
servlet中的cookie和session
查看>>
过滤器及JSP九大隐式对象
查看>>
软件(项目)的分层
查看>>
菜单树
查看>>