Egg.js 中 AJax 上传文件获取参数的方法
依赖
formidable
代码
前端
Node
'usestrict'; constfs=require('fs'); constpath=require('path'); constawaitWriteStream=require('await-stream-ready').write; constsendToWormhole=require('stream-wormhole'); constformidable=require("formidable"); constController=require('../../core/base_controller'); classFileControllerextendsController{ asyncparse(req){ constform=newformidable.IncomingForm(); returnnewPromise((resolve,reject)=>{ form.parse(req,(err,fields,files)=>{ resolve({fields,files}) }) }); } /** *上传文件,兼容单文件和多文件 *@paramcustomName单文件自定义文件名 *@paramisAjax上传方式 */ asyncupload(){ const{ctx,logger}=this; constextraParams=awaitthis.parse(ctx.req); let{multipleFile,customName,isAjax}=extraParams&&extraParams['fields']; logger.info(multipleFile,customName,isAjax); if(isAjax==='yes'){ consturls=[]; for(letkeyinextraParams.files){ constfile=extraParams.files[key]; logger.info('file.name',file.name); logger.info('customName',customName); conststream=fs.createReadStream(file.path); constfileName=customName?(customName+path.extname(file.name)):file.name; consttarget=path.join(this.config.baseDir,'app/public/upload',fileName); constwriteStream=fs.createWriteStream(target); try{ awaitawaitWriteStream(stream.pipe(writeStream)); }catch(err){ awaitsendToWormhole(stream); throwerr; } urls.push(target); } this.success({urls}) } } } module.exports=FileController;
总结
以上所述是小编给大家介绍的Egg.js中AJax上传文件获取参数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!