【基於node.js+express的web開發備忘】--技術分享(TShare)站點-資源模塊

資源模塊:可以查找整個系統中的所有上傳資源的信息、可以支持用戶上傳資源的查看以及上傳、可以支持查看已下載資源的功能。

/*跳轉至資源界面*/
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});
	});
});


以上僅爲備忘或者分享,若有問題請大家指正或討論!!


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章