1.创建app/public/admin/upload 文件夹用于存放上传的图片
2.在app/service/tools.js(工具)下写一个文件上传的方法
async getUploadFile(filename) {
let day = sd.format(new Date(), 'YYYYMMDD');
let dir = path.join(this.config.uploadDir, day);
await mkdirp(dir);
let date = Date.now();
let uploadDir = path.join(dir, date + path.extname(filename));
return {
uploadDir,
saveDir: this.ctx.origin + uploadDir.slice(3).replace(/\\/g, '/'),
};
}
3.在app/controller/XXX.js 文件下面调用方法
async saveAdvertising() {
const parts = this.ctx.multipart({ autoFields: true });
let files = {};
let stream;
while ((stream = await parts()) != null) {
if (!stream.filename) {
break;
}
const fieldname = stream.fieldname;
const dir = await this.service.tools.getUploadFile(stream.filename);
const target = dir.uploadDir;
const writeStream = fs.createWriteStream(target);
await pump(stream, writeStream);
files = Object.assign(files, {
[fieldname]: dir.saveDir,
});
}
const params = Object.assign(files, parts.field);
const params = Object.assign(files, parts.field);
if (params.action == 0) {
await this.service.advertising.addAdvertising(params);
} else if (params.action == 1) {
await this.service.advertising.editAdvertising(params);
}
this.ctx.body = {
status: 0,
};
}