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. ALAsset

    ALAsset类代表相册中的每个资源文件,可以通过它获取资源文件的相关信息还能修改和新建资源文件,ALAssetRepresentation类代表相册中每个资源文件的详细信息,可以通过它获取资源的大小 ...

  2. Codeforce 370C Mittens 巧妙数学题

    这道题目我一开始想错了,觉得只要排好序,再从头到尾把可以相互交换的进行下交换就可以了...事实证明是错的.正确的解法比较巧妙,而且写法非常好,值得学习 首先,要注意的一个规律是,假如最大的颜色数字出现 ...

  3. 题解 P2831 【愤怒的小鸟】

    题目 我的天,这题是真的卡精度...... 主要是精度很不好处理,经本蒟蒻测验,精度在\(10^{-6}\)会比较好优雅 [分析] 对于这种某个变量特别小\((\leq 31)\)的题目,本蒟蒻第一反 ...

  4. C++读取数量不定的数据

    #include <iostream> using namespace std; int main(){ ,num=; while(cin >> num){//此表达式从标准输 ...

  5. c#学习笔记02——接口

    本身并不实现功能,但提供一种模板定义,为从它继承类或结构提供了一种定义的规范 有了接口,程序员可以把程序定义的更积极啊清晰和条理化 理解接口 接口支持多继承:抽象类不能实现多继承 接口只能定义抽象规则 ...

  6. 编程基础-servlet1

    1.Servelet是什么 sevlet是Server与Applet 的缩写,即服务端小程序.Sun公司提供的开发动态web资源的技术. servelet本质是java类,但遵循Servlet规范,没 ...

  7. 题解【DP100题1~10】

    哎~这事做晚了~ (Dp100计划T1) 只有蓝题及以上才会水题解 分行Dp,行间没有转移 \[ F[L][R] = max(F[L+1][R]+2^k \times V[L],F[L][R-1]+2 ...

  8. [Python]安装和运行flask框架

    随着你的 Python 项目越来越多,你会发现不同的项目会需要 不同的版本的 Python 库.同一个 Python 库的不同版本可能不兼容.虚拟环境可以为每一个项目安装独立的 Python 库,这样 ...

  9. HDU-6514 Monitor(二维前缀和+差分)

    http://acm.hdu.edu.cn/showproblem.php?pid=6514 Problem Description Xiaoteng has a large area of land ...

  10. Spring4.3.25版本使用的积累性总结(不定期更新)

    Spring4.3.25版本使用的积累性总结 Spring4.x所有Maven依赖 Spring基于XML配置方式注入bean对象和@Resource注解的使用 详解Spring3.x 升级至 Spr ...