npm install uuid
let uuid = require('uuid/v4')
app.use(convert(betterBody({uploadDir:path.resolve(__dirname,'upload')})))
Buffer.prototype.split = function(sep){
let len = Buffer.from(sep).length // 分隔符的字节长度
let pos = 0
let index = 0
let arr = []
while(-1!=(this.indexOf(sep,pos))){
arr.push(this.slice(pos,inndex))
pos+=len + index
}
arr.push(this.slice(pos))
return arr
}
let buffer = Buffer.from('ss**ss**ss').split('**')
自己写一个betterBody
function betterBody({uploadDir}){
return async (ctx,next)=>{
let arr = []
ctx.req.on('data',funcction(data){
arr.push(data)
})
ctx.req.on('end',function(){
// 最后resolve出去
if(ctx.get('content-Type').includes('multipart')){
let r = Buffer.concat(arr).toString()
let boundary = "--"+ ctx.get('content-type').split("=")[0]
let lines = r.split(boundary).slice(1,-1)
// 取到中间有用的部分
let fileds = {}
linnes.forEach((line)=>{
let [head,conntent] = line.split('\r\n\r\n')
head =head.toString()
if(head.includes('filename')){
// 是文件读
line.slice(head.length+4,2)
let uuid = require('uuid/v4')
let fs = require('fs')
fs.writeFileSync(path.resolve(__dirname,uploadDir,uuid()+ ''"))
// 取出头
} else {
// 文本
let key = head.match(/name="([\s\S]*)"/im)[1]
let value = content.toString().slice(0,2)
fileds[key] = value
}
})
}
})
}
}
分割线分割
koa 开发的eggjs
express 自带中间件 支持ejs 和jade 。 render