【基于node.js+express的web开发备忘】--技术分享(TShare)站点-资源模块
2014-06-28 21:58
567 查看
资源模块:可以查找整个系统中的所有上传资源的信息、可以支持用户上传资源的查看以及上传、可以支持查看已下载资源的功能。
以上仅为备忘或者分享,若有问题请大家指正或讨论!!
/*跳转至资源界面*/ router.get('/resource', function(req, res) { if(!req.session.user) { return res.redirect('/'); } var msg = null; Resource.query({}, function (err, docs) { if(err) { console.log(err); } res.render('index', { title: '资源', toUrl: '/resource', toBodyUrl: '/all', user: req.session.user, items: docs, msg: msg}); }); });
/*下载资源*/ router.post('/doDownLoad', function(req, res) { if(!req.session.user) { return res.redirect('/'); } //console.log("req.body=="+JSON.stringify(req.body)); //console.log("req.session.user=="+JSON.stringify(req.session.user)) var filePath = Util.trim(req.body.filePath); var downLoadResource = new DownResource({ //下载者 downLoadName: req.session.user.userName, //下载者昵称 downLoadNickName: req.session.user.nickName, //下载时间 downloadTime: Util.getToday('yyyy-MM-dd HH:mm:ss'), //资源名称 resName: req.body.fileName, //资源描述 resDesc: req.body.fileDesc, //资源路径 resPath: filePath, //资源格式 resStyle: req.body.fileStyle, //上传时间 uploadTime: req.body.uploadTime, //上传者 userName: req.body.userName, //上传者昵称 nickName: req.body.nickName }); //console.log("downLoadResource=="+JSON.stringify(downLoadResource)); downLoadResource.save(function(err) { if(err) { console.log(err); } }); if(filePath != '') { var fileName = encodeURI(filePath.substr(filePath.lastIndexOf("/")+1)); fs.readFile("."+filePath, "binary", function(err, file){ if(err){ res.write(err+"\n"); res.end(); }else{ res.writeHead(200, {"Content-Type": "application/octet-stream;charset=UTF-8", "Content-Disposition": "attachment; filename="+fileName}); res.write(file, "binary"); res.end(); } }); } else { res.redirect('/resource'); } });
/*跳转至资源界面*/ router.get('/resource/upload', function(req, res) { if(!req.session.user) { return res.redirect('/'); } var msg = null; if(req.param('res_msg') != undefined) { msg = req.param('res_msg'); } Resource.query({userName:req.session.user.userName}, function (err, docs) { if(err) { console.log(err); } res.render('index', { title: '资源', toUrl: '/resource', toBodyUrl: '/upload', user: req.session.user, items: docs, msg: msg}); }); });
/*上传资源*/ router.post('/doUpload', function(req, res) { if(!req.session.user) { return res.redirect('/'); } var resObj = req.files.uploadResource; var resName = resObj.name; if(resName == '') { //未添加资源! return res.redirect('/resource/upload?res_msg=0'); } /* //文件大小1M if(fileObj.size > 1048576) { //上传图片太大! return res.redirect('/resource/upload?res_msg=1'); } */ var resStyle = resName.substr(resName.indexOf(".")+1); var resourceName = Util.trim(req.body.resourceName); if(resourceName == '') { resourceName = resName.substr(0, resName.indexOf(".")); } var resourceDesc = Util.trim(req.body.resourceDesc); if(resourceDesc == '') { resourceDesc = '--'; } //-------------------------文件上传处理------------------------------------- fs.rename(resObj.path, "./upload/"+resourceName+"."+resStyle, function(err) { if(err){ console.log(err); //上传过程中出错! return res.redirect('/resource/upload?res_msg=2'); } var resource = new Resource({ //资源唯一编码 qno: Util.sequenceCD(), //资源名称 resName: resourceName, //资源描述 resDesc: resourceDesc, //资源路径 resPath: '/upload/'+resourceName+"."+resStyle, //资源格式 resStyle: resStyle, //上传时间 uploadTime: Util.getToday('yyyy-MM-dd HH:mm:ss'), //上传者 userName: req.session.user.userName, //上传者昵称 nickName: req.session.user.nickName }); //上传文件信息 resource.save(resource, function(err, user) { if(err) { console.log(err); //上传文件信息保存过程中出错! return res.redirect('/resource/upload?res_msg=error'); } }); res.redirect('/resource/upload'); }); //-------------------------------------------------------------- });
/*跳转至资源界面*/ router.get('/resource/download', function(req, res) { if(!req.session.user) { return res.redirect('/'); } var msg = null; if(req.param('res_msg') != undefined) { msg = req.param('res_msg'); } DownResource.query({downLoadName:req.session.user.userName}, function (err, docs) { if(err) { console.log(err); } res.render('index', { title: '资源', toUrl: '/resource', toBodyUrl: '/download', user: req.session.user, items: docs, msg: msg}); }); });
以上仅为备忘或者分享,若有问题请大家指正或讨论!!
相关文章推荐
- 【基于node.js+express的web开发备忘】--技术分享(TShare)站点-注册模块
- 【基于node.js+express的web开发备忘】--技术分享(TShare)站点-话题讨论模块
- 【基于node.js+express的web开发备忘】--技术分享(TShare)站点-登录模块
- 【基于node.js+express的web开发备忘】--技术分享(TShare)站点-提问模块
- 【基于node.js+express的web开发备忘】--技术分享(TShare)站点-布局(layout)
- 【基于node.js+express的web开发备忘】--nodejs v0.11.13 + express v4.2.0+mongodb v2.0.6
- Node.js 基于 ursa 模块的 RSA 加密解密(已与IOS,Android实现加密通信)
- 安装node.js+express for windows的Web开发环境
- node.js web开发:EXPRESS 4.x 以上使用session和cookie 的记录
- node.js 之cookie 与express 模块样例
- nodejs+express+jade安装备忘
- 为node.js服务器添加静态网页,express模块。
- 游戏任务成就体系的实现(五):通讯模块(MsgUtil)基于NodeJS+TCP的机制的实现
- Node.js下基于Express + Socket.io 搭建一个基本的在线聊天室
- node.js高级编程|node.js 视频教程_基于node.js+Express.js+Jade+MongoDB实战开发
- Node.js进行Web开发(一)--Express,路由控制,模板引擎
- Node.js Web开发(二)认识Express(上)
- nodejs express 框架解密3-中间件模块
- 像asp.net Mvc一样开发nodejs+express Mvc站点