web 项目应用express4.0框架

html 表单post 文件上传失败,后端无法获取提交文件

express不支持文件上传。

方式一

若是图片,可以将图片转码为BASE64上传

前端框架angularjs代码 转换代码如下

 $scope.filechange=function(index){
var file = this.files[0];
var url = webkitURL.createObjectURL(file);
/* 生成图片
* ---------------------- */
var $img = new Image();
$img.src = url;
$img.onload = function () {
//生成比例
var width = this.width,
height = this.height,
scale = width / height;
width = parseInt(800);
height = parseInt(width / scale);
//生成canvas
var $canvas = $('#canvas');
var ctx = $canvas[0].getContext('2d');
$canvas.attr({ width: width, height: height });
ctx.drawImage($img, 0, 0, width, height);
var base64 = $canvas[0].toDataURL('image/jpeg', 0.5);
var cc = $("#pic" + index);
cc.attr("src", url);
postdata["file" + index] = base64.substr(23);
} }
$scope.upload=function(){
$http.post('UploadFile/FenXiangImg?wxopenid=222&orderid=111&templateid=1',$scope.postdata).success(function(data) {
alert("sucess");
});
}

方式二

nodejs 后端引用connect-multiparty包

后端代码如下

路由

 var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
app.post('/q/people/insertPeoples', multipartMiddleware, function(req, res) {
if(req.session&&req.session.account) {
var filepath=req.files.peoples.path;
console.log(req);
People.insertPeoples(req,res,filepath);
}
else{
res.send({error:1})
} });

业务逻辑实现

function insertPeoples(req,res,filepath) {
basemodule.checkAccountRole(req,res,function(account) {
fs.readFile(filepath, function (err, filedata) {
console.log(err +filedata);
csv.parse(filedata, {comment: '#'}, function(err, output){
fs.unlink(filepath, function (err) {
});
var allpeoples=[];
var keys=['_id','idcard','wechatuid','qqnum','mac','name'];
console.log(JSON.stringify(output));
output.forEach(function(people){
var peopleobj={};
for(var i =0;i<keys.length;i++){
peopleobj[keys[i]]=people[i];
}
if(peopleobj.mac){
peopleobj.mac=peopleobj.mac.toUpperCase();
}
allpeoples.push(peopleobj);
});
if(allpeoples.length>0){
db.insertPeoples(allpeoples,account,function(err,doc){
if(!err){
res.redirect('/#people'); }else{res.send({error:1})}
})
}
else{
res.redirect('/#people');
}
});
});
})
}

nodejs express 框架 上传文件的更多相关文章

  1. Nodejs学习笔记(八)--- Node.js + Express 实现上传文件功能(felixge/node-formidable)

    目录 前言 formidable简介 创建项目并安装formidable 实现上传功能 运行结果 部分疑惑解析 写在之后 前言 前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能---- ...

  2. Nodejs学习笔记(八)—Node.js + Express 实现上传文件功能(felixge/node-formidable)

    前言 前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能----文件上传,示例以一个上传图片的功能为例子 上传功能命名用formidable实现,示例很简单! PS:最近比较忙,距上一次 ...

  3. android 使用AsyncHttpClient框架上传文件以及使用HttpURLConnection下载文件

    AsyncHttpClient开源框架android-async-http还是非常方便的. AsyncHttpClient该类通经常使用在android应用程序中创建异步GET, POST, PUT和 ...

  4. [iOS 多线程 & 网络 - 2.11] - ASI框架上传文件

    A.ASI的上传功能基本使用 1.实现步骤 (1)创建请求 使用ASIFormDataRequest (2)设置上传文件路径 (3)发送请求     2.上传相册相片 UIImagePickerCon ...

  5. JAVAWeb SSH框架 上传文件,如2007的EXCEL

    下面的代码是上传EXCEL的代码,其实,就是在上传文件到服务器,代码都差不多,只是接收的文件的类型改一下即可. 1.jsp 用的是struts2 标签 代码: <s:file name=&quo ...

  6. 使用shiro安全框架上传文件时用HttpSession获取ServletContext为null问题解决方法。

    <!--在shiroFilter 中加入一下配置--> <init-param> <param-name>targetFilterLifecycle</par ...

  7. Springmvc 上传文件MultipartFile 转File

    转自:http://blog.csdn.net/boneix/article/details/51303207 业务场景:ssm框架 上传文件到应用服务器过程中要传到专有的文件服务器并返回url进行其 ...

  8. struts2文件上传时获取上传文件的大小

    利用struts2框架上传文件时,如果想要获取上传文件的大小可以利用下面的方式进行: FileInputStream ins = new FileInputStream(file); if (ins. ...

  9. golang 上传文件(包括 gin 实现)

    golang web服务有时候需要提供上传文件的接口,以下就是具体示例.为了示例简单(吐槽下 golang 的错误处理), 忽略了所有的错误处理.本文会用两种方式(标准库和gin)详细讲解 golan ...

随机推荐

  1. Eureka高可用环境搭建

    1.创建govern-center 子工程 包结构:com.dehigher.govern.center 2.pom文件 (1)父工程pom,用于依赖版本管理 <dependencyManage ...

  2. share团队冲刺8

    团队冲刺第八天 昨天:完善代码,解决其中的问题 今天:将除登陆界面之外的界面进行修改和完善,使其美观 问题:bindview不会用,使用时出现问题

  3. shiro的小白学习

    1. shiro是啥就不用说了吧 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理 SecurityManager 是shiro的核心.它不同于java. ...

  4. PHP的isset()函数 一般用来检测变量是否设置

    PHP的isset()函数 一般用来检测变量是否设置 格式:bool isset ( mixed var [, mixed var [, ...]] ) 功能:检测变量是否设置 返回值: 若变量不存在 ...

  5. 拉格朗日插值Python代码实现

    1. 数学原理 对某个多项式函数有已知的k+1个点,假设任意两个不同的都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为: 其中每个lj(x)为拉格朗日基本多项式(或称插值基函数),其表 ...

  6. 图论模型--dijstra算法和floyd算法

    matlab代码实现:https://blog.csdn.net/weixin_40108753/article/details/81237585 python代码实现:

  7. JSON字符串

    原因:由于之前接触的JSON都是字符串与数组之间的转化,思维定式认为JSON只是字符串与数组的转化 这个原因是错误的 首先 JSON 是一种语法,用来序列化对象.数组.数值.字符串.布尔值和 null ...

  8. windows下查看rabbitmq服务是否启动

    1.命令行进入rabbitmq的安装目录下: 如下图1步骤 2.输入命令 rabbitmqctl1 status 如下图2步骤 3.有时会提示报错,如步骤3 解决办法: 我的电脑 ==> 右键 ...

  9. 剑指offer【11】- 矩形覆盖

    题目:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 在分析前不知道是什么序列,所以先看了n=1,n=2,n=3,n= ...

  10. python文件读写 文件修改

    #设置一个变量f为文件对象,并打开文件#写文件#f = open('user.txt','w',encoding='utf-8') #f是一个文件对象f=open(r'c:\Users\PL\Desk ...