express3.0升级4.0时遇到的坑

  今天做项目迁移的时候遇到了一个坑,关于文件上传的时候,在express4.0+以后,bodyparser 不处理文件的问题。

  之前项目使用的是express3.0+版本,在做上传的excel通过node-xlsx文件解析时,升级以后的express4.0不在解析上传文件,即在你的body里找不到所上传的问件。需要在加入新的模块来满足之前的需求。我们要引入‘connect-multiparty‘来处理上传文件的问题。

4.0以后上传文件,你的body里边是得不到参数,并且找不到files这个参数。

我们需要在代码中引入

var multipart = require(‘connect-multiparty‘);
var multipartMiddleware = multipart();

在去后台打印你的req参数,如下图可见:

顺便贴一下node解析excel的代码,供参考学习。

后台使用的node,下面是服务端代码

var multipart = require(‘connect-multiparty‘);var multipartMiddleware = multipart();var xlsx = require(‘node-xlsx‘);
app.all(‘/yourPath‘, multipartMiddleware, function(req, res) {
        var data, error, fpath, resJson, result, sheet1, sheets;
        resJson = function(json) {
            res.setHeader(‘Content-Type‘, ‘text/html; charset=UTF-8‘);
            return res.end(JSON.stringify(json));
        };
        result = {
            bstatus: {
                code: 0,
                des: ‘success‘
            },
            data: {
                errors: []
            }
        };
        fpath = req.files.file.path;
        try {
            sheets = xlsx.parse(fpath);
            if (sheets.length) {
                sheet1 = sheets[0];
            }
            data = [];
            if (sheet1.data) {
                data = sheet1.data;
            }
        } catch (_error) {
            error = _error;
            result.bstatus.code = 902;
            result.bstatus.des = ‘上传的文件不是EXCEL,或者有系统不能处理的数据异常‘;
            return resJson(result);
        }
    });

前端使用ajaxFileUpload组件进行上传

 var options = {
                    type: ‘post‘,
                    url: ‘yourPath‘, //用于文件上传的服务器端请求地址
                    secureuri: false, //是否需要安全协议,一般设置为false
                    fileElementId: fileElementId, //文件上传域的ID
                    dataType: ‘json‘, //返回值类型 一般设置为json
                    data: data,
                    success: function (data, status){//服务器成功响应处理函数
                        //成功回调

                    },
                    error: function (data, status, e){//服务器响应失败处理函数
                        //失败回调
                    }
                };
                $.ajaxFileUpload(options);        
时间: 2024-08-14 21:37:51

express3.0升级4.0时遇到的坑的相关文章

Vue.js高仿饿了么外卖App 前端框架Vue.js 1.0升级2.0

课程目录:第1章 课程简介介绍课程的学习目标和学习内容.第2章 Vuejs介绍从前端开发趋势分析开始,引入 MVVM 开发框架和 Vue.js,接着对比流行框架Angular 和 React,最后详细介绍 Vue.js 的核心思想-数据驱动和组件化.第3章 Vue-cli 开启 Vuejs 项目介绍 Vue 项目的脚手架,如何安装,对脚手架生成的目录文件做介绍,介绍 Vue 组件的编写方法,最后运行 demo 项目并介绍 webpack 构建脚本来说明 demo 的运行原理.第4章 项目实战-准

iOS10.0 & Swift 3.0 对于升级项目的建议

iOS & Swift新旧版本更替, 在Apple WWDC大会开始之际, 也迎来了iOS 10.0, Swift 3.0 测试版, 到目前为止, 已经是测试版2.0, 每次更新都带来了新的语法变化, Swift更加简洁, 但是Xcode 越发不给力, 输出变本加厉, NSLog 一如既往的不好使, 但是,好消息是, 无论语法怎么改变, 在已有项目的基础上, Xcode更新到8.0 测试版 2.0, 您只需按照系统提示的红空心原点提示, 一个一个的替换, 就可以完美的过度到iOS 10.0,  

day04_oracle版本升级--10.2.0.1.0升级到10.2.0.4.0

软件升级 1.oracle很少升级,除非你要用什么新的功能.因为升级要停库,好多和库相关的组件可能全要升级.升级前一定要开会研究很长时间. 2.一些大公司定期委托第三方公司做<系统安全防护评测>,扫描出一些漏洞时,会要求升级并打补丁[联通] 神州数码信息服务股份有限公司.绿盟科技 如下形式的漏洞: 漏洞详细信息 Oracle数据库Network Foundation组件远程拒绝服务漏洞 详细描述 本次扫描是通过版本进行的,可能发生误报. Oracle Network Foundation是 O

UiAutomator2.0升级填坑记

UiAutomator2.0升级填坑记 SkySeraph May. 28th 2017 Email:[email protected] 更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com 啰嗦 Google Android Developers 在2015年3月就发布了UiAutomator 2.0版本(下文简称U2),而公司的核心产品中用到还是UiAutomator老版本(下文简称U1),业界用U2的也不是很多,虽然有诸多问题和不便(如高版本OS中不支持Remo

OkHttpUtils-2.0.0 升级后改名 OkGo,全新完美支持 RxJava,比 Retrofit 更简单易用。

okhttp-OkGo 项目地址:jeasonlzy/okhttp-OkGo 简介:OkHttpUtils-2.0.0 升级后改名 OkGo,全新完美支持 RxJava,比 Retrofit 更简单易用.该库是封装了 okhttp 的网络框架,支持大文件上传下载,上传进度回调,下载进度回调,表单上传(多文件和多参数一起上传),链式调用,可以自定义返回对象,支持 Https 和自签名证书,支持 cookie 的持久化和自动管理,支持四种缓存模式缓存网络数据,支持 301 和 302 重定向,扩展了

Oracle升级_oracle 10g版本由 10.2.0.4.0升级为10.2.0.4.4(即PSU升级)

***************************************************************************************************** 续借上篇:Oracle升级_oracle 10g版本由 10.2.0.1.0升级为10.2.0.4.0(即CPU升级) ***********************************************声明***************************************

李洪强iOS开发之-环信02.1_环信 SDK 2.x到3.0升级文档

李洪强iOS开发之-环信02.1_环信 SDK 2.x到3.0升级文档 SDK 2.x 至 3.0 升级指南 环信 SDK 3.0 升级文档 3.0 中的核心类为 EMClient 类,通过 EMClient 类可以获取到 chatManager.groupManager.contactManager.roomManager对象.原来 2.0 版本的 SDK 很多方法提供了同步.异步回调.异步(block)三种方法,3.0 版只提供同步方法(async开头的方法为异步方法). 例如: //2.0

oracle-基于oracle dataguard滚动升级(oracle10.2.0.1--10.2.0.4--11.2.0.4)

oracle-基于oracle dataguard滚动升级(oracle10g升级到oracle11g)thinking:(主要技术涉及到:1.物理备库转成逻辑备库.2.数据库软件升级从oracle10.2.0.1升级到oracle10.2.0.4升级到oracle11.2.0.4.)     1.首先从搭建物理DG开始,搭建A主机数据库的物理DG B(数据库软件从oracle 10.2.0.1升级到10.2.0.4). 2.切换物理DG, 把B主机上的数据库切换为逻辑备库.(物理备库要求主备库

Oracle升级_oracle 10g版本由 10.2.0.1.0升级为10.2.0.4.0(即CPU升级)

CPU升级_ oracle 10g版本由 10.2.0.1.0升级为10.2.0.4.0 ***********************************************声明************************************************ 原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/huangyanlong). 表述有错误之处,请您留言,不胜感激. 提醒:点击目录,更有