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上传文件获取参数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!