使用koa2搭建文件上传服务,后端代码
const os = require('os'); const path = require('path'); const koaBody = require('koa-body'); const Koa = require('koa'); const app = new Koa(); const fs = require("fs"); const main = async function(ctx) { //const tmpdir = os.tmpdir(); //返回系统临时文件 const tmpdir = path.join(__dirname, "static"); const filePaths = []; const files = ctx.request.body.files || {}; const params = ctx.request.body.fields console.log(params); for (let key in files) { const file = files[key]; if(Object.prototype.toString.call(file) == '[object Array]'){ for(var j = 0; j < file.length; j++ ){ witeFile(file[j]); } }else{ witeFile(file); } } function witeFile(file){ const filePath = path.join(tmpdir, file.name); const reader = fs.createReadStream(file.path); const writer = fs.createWriteStream(filePath); reader.pipe(writer); filePaths.push(filePath); } ctx.body = filePaths; }; app.use(koaBody({ multipart: true })); app.use(main); app.listen(3000);
前端代码
<form action="http://localhost:3000/" method="post" enctype="multipart/form-data"> <input type="text" name="name" id="" value="姓名" /> <input type="text" name="pwd" id="" value="123456" /> <input type="file" name="file" id="file" value="" multiple="multiple" /> <input type="submit" value="提交"/> </form>