NodeJs form-data格式传输文件的方法(2)
总结一下的话,就是前端用form传递文件,bodyParse解析出这个form,对应的字段是ctx.request.body.files.字段名称(eg: abc),最后通过拷贝临时的数据文件来达到上传存储的目的。
bodyParse解析出的格式:
{ fields: { aaa: '123345' }, //Text类型的解析到fields中
files: //File类型的解析到files中
{
abc:
File {
domain: null,
_events: {},
_eventsCount: 0,
_maxListeners: undefined,
size: 12525,
path: 'C:\\Users\\DANNYJ~1\\AppData\\Local\\Temp\\upload_d896dcc755fcd36156c6814aafb7685e',
name: 'bamboo5.png',
type: 'image/png',
hash: null,
lastModifiedDate: 2017-12-08T10:17:04.355Z,
_writeStream: [Object] }
}
}
KOA2将POST传过来的文件存储到本地
var file = ctx.request.body.files.abc //传输文件的name是abc
console.log(ctx.request.body)
var tmpath= file['path'];
var tmparr =file['name'].split('.');
var ext ='.'+tmparr[tmparr.length-1];
var newpath =path.join('./', parseInt(Math.random()*100) + Date.parse(new Date()).toString() + ext);
console.log(tmpath);
console.log(newpath);
var stream = fs.createWriteStream(newpath);//创建一个可写流
fs.createReadStream(tmpath).pipe(stream);//可读流通过管道写入可写流
然后就会发现项目当前目录下面就会多出上传的文件了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持黑区网络。
