constKoa=require('koa');constfs=require('fs');constpath=require('path');constrouter=require('koa-router')();constkoaBody=require('koa-body');conststatic=require('koa-static');constcors=require('koa2-cors');constapp=newKoa();app.use(cors());app.use(koaBody({multipart:true,formidable:{maxFieldsSize:20*1024*1024,multipart:true,},}));constuploadUrl='http://localhost:3001/static/upload';router.get('/',(ctx)=>{ctx.type='html';constpathUrl=path.join(__dirname,'/static/upload.html');ctx.body=fs.createReadStream(pathUrl);});constuploadFilePublic=function(ctx,files,flag){constfilePath=path.join(__dirname,'/static/upload/');letfileReader,fileResource,writeStream;constfileFunc=function(file){fileReader=fs.createReadStream(file.path);fileResource=filePath+`/${file.name}`;writeStream=fs.createWriteStream(fileResource);fileReader.pipe(writeStream);};constreturnFunc=function(flag){console.log(flag);console.log(files);if(flag){leturl='';for(leti=0;i<files.length;i++){url+=uploadUrl+`/${files[i].name},`;}url=url.replace(/,$/gi,'');ctx.body={url:url,code:0,message:'上传成功',};}else{ctx.body={url:uploadUrl+`/${files.name}`,code:0,message:'上传成功',};}};if(flag){// 多个文件上传for(leti=0;i<files.length;i++){constf1=files[i];fileFunc(f1);}}else{fileFunc(files);}if(!fs.existsSync(filePath)){fs.mkdir(filePath,(err)=>{if(err){thrownewError(err);}else{returnFunc(flag);}});}else{returnFunc(flag);}};router.post('/upload',(ctx)=>{letfiles=ctx.request.files.file;if(files.length===undefined){uploadFilePublic(ctx,files,false);}else{uploadFilePublic(ctx,files,true);}});app.use(static(path.join(__dirname)));app.use(router.routes()).use(router.allowedMethods());app.listen(3001,()=>{console.log('server is listen in 3001');});