nodejs目录结构
这里是nodejs的exe目录
nodejs的模块都在这个路径下node_modules\npm\node_modules,使用npm install pagename安装的模块都在这,可执行的文件在node_modules\npm\node_modules\.bin中,可以把这个路径加到环境变量中。
js文件如果引用到了模块需要在js相同目录下存在node_modules文件夹,并且里面包含模块。
server.js代码
var express = require('express');
var app = express();
var multer = require('multer');
var http = require('http');
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.use(express.static('public'));
var storage = multer.diskStorage({
destination: function (req, file, cb) {
// 文件上传成功后会放入以下的文件夹
cb(null, './public/FileServer/uploads')
},
filename: function (req, file, cb) {
// 设置文件的名字为其原本的名字,也可以添加其他字符,来区别相同文件,例如file.originalname+new Date().getTime();利用时间来区分
cb(null, new Date().getTime() + file.originalname)
}
});
var upload = multer({
storage: storage
});
app.post('/FileServer/fileupload', upload.single('file'), function (req, res, next) {
console.log('fileserver fileupload\r\n');
res.end(req.file.originalname);
});
var server = app.listen(8080, function () {
var host = server.address().address;
var port = server.address().port;
console.log('file server listening at http://%s:%s\r\n', host, port);
});
这里引用了express模块,可以把public目录映射到服务器上,里面的文件可以通过get方式直接获取下载等。这里的multer模块可以支持上传文件,也可以同时上传多个文件upload.array。这样就可以实现文件服务器了。
processes.json代码
{
"apps": [
{
"name": "file server",
"cwd": "",
"script": "server.js",
"log_date_format": "YYYY-MM-DD HH:mm Z",
"error_file": "log/node-app/node-app.stderr.log",
"out_file": "log/node-app.stdout.log",
"pid_file": "pids/node-geo-api.pid",
"instances": 6,
"min_uptime": "1s",
"max_restarts": 10,
"max_memory_restart": "1M",
"cron_restart": "1 0 * * *",
"watch": false,
"merge_logs": true,
"exec_interpreter": "node",
"exec_mode": "cluster_mode",
"autorestart": false,
"vizion": false
}
]
}
这个是pm2的启动文件,安装pm2模块,使用命令pm2 start processes.json就可以开启服务。