前段时间有个需求,领导让做个上传下载的页面,好适配他后台c语言生成license的功能,需要独立部署到Linux服务器。我思考许久,因为就一个页面部署,所以采用传统的Tomcat部署的工程肯定是不适合需求的,并且一般的js不能直接在linux服务器执行后台命令,所以我再查询前端技术后,觉得用node js 是最合适的,因为这样既不用麻烦前端容器,并且还能执行后台命令,最主要的是对流的操作有着相当的性能(nodejs相对于需要使用大量的计算的工程,性能不是很好),因此准备做一个nodejs的页面工程。
下面是我的页面的截图(该图片已经运用于项目,请勿直接套用商业用途):
主要功能介绍,上传一个请求文件,然后日期在不手动填写的情况下,默认是当天至一百年后。然后点击生成license按钮,实现上传并生成license,最后把生成好得license下载下来。
下面我们介绍一下怎样搭建nodejs工程(webstorm):
注意:创建nodejs前,需要先添加nodejs和express。请参考其他文档
因为我们只有一个页面,和一个server。所以我们可以删除路由和其余相关的文件夹,并且改造app.js,下面是我工程server的全部代码:
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// 此方法用于在浏览器访问我们的IP时所要反回的界面
app.get("/", function (req, res) {
res.sendFile(__dirname + "/Index.html");
});
app.get("/Images/logo.png", function (req, res) {
res.sendFile(__dirname + "/Images/logo.png");
});
//此方法用于返回一个yyyyMMdd格式的日期
function getyyyyMMdd(date){
var d = new Date(date);
var curr_date = d.getDate();
var curr_month = d.getMonth() + 1;
var curr_year = d.getFullYear();
String(curr_month).length < 2 ? (curr_month = "0" + curr_month): curr_month;
String(curr_date).length < 2 ? (curr_date = "0" + curr_date): curr_date;
var yyyyMMdd = curr_year + "" + curr_month +""+ curr_date;
return yyyyMMdd;
}
//用于生产license的方法
function creatlicense(time,deadtime,req,res,currentTime,filename) {
console.log("进入了生成license方法:"+time);
console.log(deadtime);
console.log(currentTime);
//1.首先判断是否有生成license必备的文件
var Uploder = __dirname +'/Images/imgUploader_'+currentTime+'_'+filename;
if(!fs.existsSync(Uploder)){
return res.end("Please upload the file");
}else{
//2.判断时间使用期限是否正确
var olddate = new Date(time);
var olddeaddate = new Date(