(精华)2020年7月8日 Node.js connect的使用文件上传
发布日期:2021-06-29 15:06:48
浏览次数:2
分类:技术文章
本文共 4118 字,大约阅读时间需要 13 分钟。
客户端
Document
服务端
var connect = require('connect');var bodyParser = require('body-parser'); //body解析var cors = require('cors');const url = require('url');const qs = require('qs');const path = require('path');const formidable = require('formidable');function logger(req, res, next) { console.log(req.method + ' ' + req.url); next(); //执行下一个中间件}//注意post请求的时候可以通过req.body获取参数,但是url不行得 通过url去解析function getParams(req) { //判断是什么请求 var query = { }; if (req.method.toLocaleLowerCase() == 'post') { query = req.body; } else { // localhost:9090/kkk?name=pp&age=pp const urlJson = url.parse(req.url); console.log('urlJson', urlJson); query = qs.parse(urlJson.query); console.log('query', query); } return query;}// 写成中间件形式function getParamsMiddle(req, res, next) { if (req.method.toLocaleLowerCase() == 'post') { query = req.body; } else { const urlJson = url.parse(req.url); query = qs.parse(urlJson.query); } req.query = query; console.log('参数'); next();}var app = connect();app.use(cors()) // .use(function (req, res, next) { // //跨域处理 // // Website you wish to allow to connect // res.setHeader('Access-Control-Allow-Origin', '*'); //允许任何源 // // Request methods you wish to allow // res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); //允许任何方法 // // Request headers you wish to allow // res.setHeader('Access-Control-Allow-Headers', '*'); //允许任何类型 // //utf-8转码 // next(); //next 方法就是一个递归调用 // }) .use(logger) .use(function (req, res, next) { console.log('---------'); console.log(req.body); // undefined next(); }) //解析 application/json,最后保存的数据都放在req.body对象上 .use(bodyParser.json()) //JSON解析 // 解析 application/x-www-form-urlencoded .use(bodyParser.urlencoded({ extended: true })) .use(function (req, res, next) { console.log('++++++++'); console.log(req.body); // 有数据 next(); }) .use(getParamsMiddle) .use('/info', function (req, res, next) { //response 响应 request请求 // 中间件 // var queryres = getParams(req); //需要使用getParamsMiddle中间件 res.end(JSON.stringify(req.query)); var data = { "code": "200", "msg": "success", "result": [{ "id": 1, "name": "sonia", "content": "广告投放1----" }, { "id": 2, "name": "ben", "content": "广告投放2" }, { "id": 3, "name": "lili", "content": "广告投放3" } ] } res.end(JSON.stringify(data)); next(); }) .use('/upload/img', function (req, res, next) { var form = new formidable.IncomingForm(); // form.encoding='utf-8'; //设置表单域的编码 form.uploadDir = path.join(__dirname, './static'); //设置上传文件存放的文件夹,默认为系统的临时文件夹,可以使用fs.rename()来改变上传文件的存放位置和文件名 form.keepExtensions = true; //设置该属性为true可以使得上传的文件保持原来的文件的扩展名。 // form.parse(request, [callback]) // 该方法会转换请求中所包含的表单数据,callback会包含所有字段域和文件信息 form.parse(req, function (err, fields, files) { console.log(files) if (err) { return; }; var size = parseInt(files.uploadImg.size); if (size > 1024 * 1024) { res.end("图片过大!") // 删除文件操作。 用法:fs.unlink(path, [callback(err)]) fs.unlink(files.uploadImg.path); return; }; res.end(JSON.stringify({ data: 1, success: true, msg: 'success!' })); next(); }); }) .listen(3000);
转载地址:https://codeboy.blog.csdn.net/article/details/107215107 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月22日 00时03分48秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
实习小白的日常(4)
2019-04-29
微信扫码登录验证PHP代码(不用开放平台)
2019-04-29
CH554E USB单片机 10引脚小封装低成本USB方案
2019-04-29
windows MQTT客户端
2019-04-29
LINUX下挂载(mount)查看树莓派镜像文件
2019-04-29
基于CH568芯片加密SD卡方案
2019-04-29
1元钱的超低成本单芯片USB单片机方案
2019-04-29
单片机/树莓派扩展双串口(TTL和RS485)
2019-04-29
JAVA(android)提取WIFI客流探针MAC地址源码
2019-04-29
基于CH568芯片的SATA电子盘方案
2019-04-29
linux下C语言判断网络是否连接
2019-04-29
STM32Cube_FW_F4_V1.17 F4固件包百度网盘下载
2019-04-29
猿来绘Java-35-线程的同步(生产者和消费者问题)
2019-04-29
猿来绘Java-36-解决线程安全问题
2019-04-29
猿来绘Java-37-ReentrantLock解决线程安全问题
2019-04-29
猿来绘Java-38-生产者消费者模型
2019-04-29
猿来绘Java-39-JDK8的新日期时间类
2019-04-29
猿来绘Java-40-比较器(Comparable 接口与 CompareTo方法)
2019-04-29
猿来绘Java-41-源码分析String对象的数组的排序(JDK1.8)
2019-04-29