node实现ajax上传图片和文件

以图片为例:

客户端

html代码

<input type='file' id='oImg'>

用FormDate对象包裹图片

var oImg = document.getElementById('oImg');
var formDate = new FormData();
      formDate.append('file',oImg.file[0] ) ;
      ajax(formDate ,'post',url,callbacl);  //封装的ajax方法

node端

var chunks = [];
        var size = 0;
        req.on('data' , function(chunk)
        {
            console.log(chunk);
            chunks.push(chunk);
            size+=chunk.length;
        });

        req.on("end",function()
        {
            console.log(chunks);
             var buffer = Buffer.concat(chunks , size);
             if(!size){
                 res.writeHead(404);
                 res.end('');
                 return;
             }
              var rems = [];

                 //根据\r\n分离数据和报头
                 for(var i=0;i<buffer.length;i++){
                     var v = buffer[i];
                     var v2 = buffer[i+1];
                     if(v==13 && v2==10){
                         rems.push(i);
                     }
                 }

                //图片信息
                var picmsg_1 = buffer.slice(rems[0]+2,rems[1]).toString();
                var filename = picmsg_1.match(/filename=".*"/g)[0].split('"')[1];

                //图片数据
                var nbuf = buffer.slice(rems[3]+2,rems[rems.length-2]);

                var path = './public/images/'+filename;
                fs.writeFileSync(path , nbuf);
                console.log("保存"+filename+"成功");

                res.writeHead(200, { 'Content-Type': 'text/html;charset=utf-8'});
                res.end('<div id="path">'+path+'</div>');
            });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容