c语言sscanf函数的用法是什么
219
2022-11-30
nodejs 处理post文件数据 模拟上传
首先利用Content-Disposition: form-data; name="username"1 ------WebKitFormBoundaryLIXOJt36aIHyhrvq Content-Disposition: form-data; name="password"1 ------WebKitFormBoundaryLIXOJt36aIHyhrvq Content-Disposition: form-data; name="f1"; filename="aaa.txt" Content-Type: text/plainabcd 1234 ------WebKitFormBoundaryLIXOJt36aIHyhrvq--
利用该格式处理出我们需要的数据,都是一些字符以及二进制操作。
server.js
const util=require('buffer_util');const fs=require('fs');res)=>{ let arr=[]; console.log(req.headers); let boundary='--'+req.headers['content-type'].split('; ')[1].split('=')[1]; console.log(boundary); req.on('data',buffer=>{ arr.push(buffer); }); req.on('end',()=>{ let buffer=Buffer.concat(arr); console.log('最初'+buffer); let arr2=util.bufferSplit(buffer,boundary); arr2.pop(); arr2.shift(); arr2.forEach(buffer=>{ console.log('原始'+buffer.toString()); buffer=buffer.slice(2,buffer.length-2); let n=buffer.indexOf('\r\n\r\n'); let info=buffer.slice(0,n).toString(); let data2=buffer.slice(n+4,buffer.length); // console.log('--'+info); // console.log('-'+data2); if(info.indexOf('\r\n')!=-1){//文件信息 let res2 = info.split('\r\n')[0].split('; '); let name = res2[1].split('=')[1]; let filename = res2[2].split('=')[1]; name=name.substring(1,name.length-1); filename=filename.substring(1,filename.length-1); console.log('&&&&&'+name, filename+'&&&&&&&&'); fs.writeFile(`upload/${filename}`,data2,err=>{ if(err){ console.log(err); }else { console.log('上传成功'); } }) }else{ let name=info.split('; ')[1].split('=')[1]; name=name.substring(1,name.length-1); console.log(name); } console.log('**'+data2.toString()+'**'); }) });}).listen(8080);
html
利用multiparty库解决上面的问题
const multiparty=requrie('multiparty'); let form = new multiparty.Form({ uploadDir: './upload' }); form.parse(req); form.on('field',(name,value)=>{ console.log('字段',name,value); }); form.on('file',(name,file)=>{ console.log('文件',name,file); }); form.on('close',()=>{ console.log('表单解析完成'); })}).listen(8080);
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~