h5特性formdata带参数上传文件,上传到node端

本文介绍了一个使用HTML、JavaScript和Node.js实现的文件上传系统。通过前端JavaScript遍历选择的文件并将其附加到FormData对象中,然后发送到后端。Node.js后端利用formidable模块解析请求,将上传的文件保存到指定目录。

html:

<input type="file" id="addpic"  multiple="multiple"/>
<button id="uploadpic" style="width: 100px;height: 100px;">btn</button>
js:

var btn=document.getElementById("uploadpic");
btn.onclick=function(){
    var datapic=new FormData();
       datapic.append("abc","33333333333333");    传的参数abc 忘下看node服务端怎么接收
    for(var k=0;k<document.getElementById("addpic").files.length;k++)
    {
        datapic.append("myfile"+k, document.getElementById("addpic").files[k]);     //第一个参数是文件实例名,可以再后台作为files的引用来遍历所有文件  第二个是文件实例
    }
//使用JS来遍历files文件,并添加到FormData实例中,同时赋予名字"myfile"+k,
    $.ajax({
        url: "/add",
        data: datapic,
        type: 'POST',
        async: false,
        cache: false,
        contentType: false,    //这些参数要设置为false
        processData: false,
        success: function (result) {

//处理函数
        }
});
}

node:

app.js:

app.all("/add",userCtrl.add);   userCtrl是js文件名

userCtrl.js:
var formidable=require("formidable");
var fs=require("fs");
exports.add=function(req,res){
    var form = new formidable.IncomingForm();
    form.keepExtensions = true;
    form.uploadDir = "./avatar";
    form.multiples = true;
    form.maxFieldsSize = 50 * 1024 * 1024;
    form.parse(req, function(err, fields, files) {
	var abc=fields.abc;   结果是33333333333333,接收到了传来的参数,就是这样,在fields里
        for(var k in files)
        {
            fs.rename(files[k].path,"./avatar/"+files[k].name);
        }
        res.writeHead(200, {'Content-Type': 'text/html','Access-Control-Allow-Origin':'*','Accept-Encoding':'gzip, deflate, sdch'});



        res.end();
    });

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值