一、前端
upload(){
const file = document.querySelector("#file");
const fd = new FormData(); // 需要创建一个表单对象
fd.append("f",file.files[0])
axios({
method:'post',
url: '/api/upload',
data: fd
})
}
二、后端
app.use(koaBody({
multipart: true
})
...
router.post("/api/upload", async (ctx, next) => {
const file = ctx.request.body.files.f;
// 获取上传文件,f是表单名称即name,是自己定义的
const reader = fs.createReadStream(file.path);
const filename = (new Date()).valueOf() + file.name;
let filePath = path.join(__dirname, 'upload/') + `/${filename}`;
// 创建可写流
const upStream = fs.createWriteStream(filePath);
// 可读流通过管道写入可写流
reader.pipe(upStream);
ctx.body = "success";
})