NodeJs实现简易WEB上传下载服务器
网络编程 2021-07-04 15:51www.168986.cn编程入门
这篇文章主要为大家详细介绍了NodeJs实现一个简易WEB上传下载服务器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
项目上的需求是集群均可生成PDF文件或是访问PDF文件,没有文件服务器,故做一个简易的文件服务器。
解决方案集群内的机器(客户端)生成PDF文件之后将PDF文件推给文件服务器,我们暂且称它为服务端;如果某个客户端需要访问到这个PDF文件,则去服务端获取(因为可能其他客户端已经生成了该PDF文件),如果没有找到,则自己客户端生成PDF文件,再将PDF文件推给服务端。
为了实施简易,现采取NodeJs来实现一个小程序。 不多说,直接上代码
server.js
var express = require('express'); var url = require('url'); var fs = require('fs'); var http = require('http'); var queryString = require('querystring'); var bodyParser = require('body-parser'); var path=require('path'); var app = express(); app.use(bodyParser.json({limit:'1000kb'})); app.use(bodyParser.urlencoded({limit:'1000kb',extended:true})); var count=0; app.post('/upload.node',function(req,resp){ console.log('上传请求 '+ (new Date())); var data = new Buffer(req.body.fileData,'base64'); var filePath = req.body.filePath; var pathObj = path.parse(filePath);//对文件路径字符串进行操作 var responseBody = {}; mkdirsSync(pathObj.dir);//递归创建文件目录 try{ var writerStream = fs.createWriteStream(filePath); writerStream.write(data); writerStream.end(); writerStream.on('finish', function() { console.log('上传完成 '+ (new Date())); }); writerStream.on('error', function(err){ console.log(err.stack); }); responseBody=JSON.stringify({ returnMsg:'200' }); }catch(err){ console.log('上传出错 '+ (new Date())); responseBody=JSON.stringify({ returnMsg:'400' }); } //写入文件 //console.log(' ' + count +' '); resp.status(200).end(responseBody.toString()); }); app.post('/download.node',function(req,resp){ console.log('下载请求 '+ (new Date())); var filePath = req.body.filePath; console.log('download'); var responseBody = {}; if(fs.existsSync(filePath)){ var data = fs.readFileSync(filePath); var dataBase64 = data.toString('base64'); responseBody = JSON.stringify({ returnMsg:'200', filePath:filePath, fileData:dataBase64 }); console.log('下载完成 '+ (new Date())); }else{ responseBody=JSON.stringify({ returnMsg:'400' }); console.log('文件未找到 '+ (new Date())); } //console.log(' ' + ++count +' '); resp.status(200).end(responseBody.toString()); }); //递归创建文件目录 同步方法 function mkdirsSync(filePath){ if(fs.existsSync(filePath)){ return true; }else{ if(mkdirsSync(path.dirname(filePath))){ fs.mkdirSync(filePath); return true; } } } var server = app.listen(20001,function(){ console.log('Server started.'); })
提供一个测试js代码.. 浏览器通过get请求 http://127.0.0.1:20000/upload.do?filePath=XXXX即可触发上传过程
var express = require('express'); var url = require('url'); var fs = require('fs'); var http = require('http'); var queryString = require('querystring'); var bodyParser = require('body-parser'); var app = express(); app.use(bodyParser.json({limit:'1000kb'})); app.use(bodyParser.urlencoded({limit:'1000kb',extended:true})); var count=0; app.get('/upload.do',function(req,resp){ console.log('upload.do'); //var path = url.parse(req.url).pathname; //console.log('Request for ' + path); var filePath = req.query.filePath; //var fileData = req.query.fileData; var address = req.query.address; upload(filePath,'127.0.0.1',20001); console.log(' ' + ++count +' '); var response = { "first":req.query.filePath, "last":req.query.address }; resp.end(JSON.stringify(response)); }); function upload(filePath,address,port){ var Data = readFile(filePath); var dataBase64 = Data.toString('base64'); console.log(Data); console.log(dataBase64); //var DataJSON = JSON.stringify(Data); //fs.writeFile('D:/input.txt',dataBase64,function(err){ // if(err){ // console.err(err); // } /
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程