国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

NodeJs實(shí)現(xiàn)簡(jiǎn)易WEB上傳下載服務(wù)器

2024-05-06 15:36:00
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

項(xiàng)目上的需求是集群均可生成PDF文件或是訪問(wèn)PDF文件,但是沒(méi)有文件服務(wù)器,故做一個(gè)簡(jiǎn)易的文件服務(wù)器。

解決方案:集群內(nèi)的機(jī)器(客戶端)生成PDF文件之后將PDF文件推給文件服務(wù)器,我們暫且稱它為服務(wù)端;如果某個(gè)客戶端需要訪問(wèn)到這個(gè)PDF文件,則去服務(wù)端獲取(因?yàn)榭赡芷渌蛻舳艘呀?jīng)生成了該P(yáng)DF文件),如果沒(méi)有找到,則自己客戶端生成PDF文件,再將PDF文件推給服務(wù)端。

為了實(shí)施簡(jiǎn)易,現(xiàn)采取NodeJs來(lái)實(shí)現(xiàn)一個(gè)小程序。 不多說(shuō),直接上代碼:

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('上傳請(qǐng)求 '+ (new Date())); var data = new Buffer(req.body.fileData,'base64'); var filePath = req.body.filePath; var pathObj = path.parse(filePath);//對(duì)文件路徑字符串進(jìn)行操作  var responseBody = {}; mkdirsSync(pathObj.dir);//遞歸創(chuàng)建文件目錄 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('上傳出錯(cuò) '+ (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('下載請(qǐng)求 '+ (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());}); //遞歸創(chuàng)建文件目錄 同步方法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.');})

提供一個(gè)測(cè)試js代碼..  瀏覽器通過(guò)get請(qǐng)求 http://127.0.0.1:20000/upload.do?filePath=XXXX即可觸發(fā)上傳過(guò)程

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); // } //}); var JsonData = queryString.stringify({ filePath:filePath, fileData:dataBase64 }); //console.log(JsonData); var options = { method: "POST", host : address, port : port, path : '/upload.node', headers: {  'Content-Type':'application/x-www-form-urlencoded' } };  var req = http.request(options, function(res){  res.setEncoding('utf8'); }); req.write(JsonData); req.end();} function readFile(filePath){ var fileData = ''; try{ fileData = fs.readFileSync(filePath); }catch(e){ fileData = ''; } return fileData;} app.post('/download.do',function(req,resp){ //可直接參考server.js的代碼}) var server = app.listen(20000,function(){  console.log('Server started.');})            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 道真| 镇坪县| 固阳县| 平湖市| 双柏县| 忻城县| 仁怀市| 左贡县| 肇东市| 霸州市| 元谋县| 怀安县| 沂南县| 三亚市| 罗山县| 绵阳市| 贵南县| 鄂托克前旗| 克什克腾旗| 沈阳市| 临洮县| 靖远县| 佳木斯市| 桂平市| 庆云县| 卓尼县| 宜都市| 巴林右旗| 博客| 桂东县| 渝北区| 无锡市| 哈密市| 大名县| 门源| 大厂| 济源市| 马关县| 凉城县| 岳阳市| 宽城|