瀏覽代碼

其他台账,附件上传问题
PS:特殊的png和docx的文件存在的情况下,await part()无法判断最后一个文件,并回传undefine

MaiXinRong 4 年之前
父節點
當前提交
c41d5b380a
共有 1 個文件被更改,包括 12 次插入6 次删除
  1. 12 6
      app/controller/stage_extra_controller.js

+ 12 - 6
app/controller/stage_extra_controller.js

@@ -203,13 +203,14 @@ module.exports = app => {
                 const parts = ctx.multipart({ autoFields: true });
                 let index = 0;
                 const create_time = Date.parse(new Date()) / 1000;
-                let bonus;
-                while ((stream = await parts()) !== undefined) {
+                let stream = await parts();
+                const bonus = await ctx.service.stageBonus.getStageDataById(parts.field.bonus_id);
+                if (!bonus || bonus.sid !== ctx.stage.id) throw '该奖罚金,当前不允许上传附件';
+                const size = parts.field.size;
+                while (stream !== undefined) {
                     if (!stream.filename) {
                         throw '未发现上传文件!';
                     }
-                    if (!bonus) bonus = await ctx.service.stageBonus.getStageDataById(parts.field.bonus_id);
-                    if (!bonus || bonus.sid !== ctx.stage.id) throw '该奖罚金,当前不允许上传附件';
 
                     const fileInfo = path.parse(stream.filename);
                     const dirName = 'app/public/upload/extra/' + moment().format('YYYYMMDD');
@@ -223,12 +224,17 @@ module.exports = app => {
                     bonus.proof_file.push({
                         filename: fileInfo.name,
                         fileext: fileInfo.ext,
-                        filesize: Array.isArray(parts.field.size) ? parts.field.size[index] : parts.field.size,
+                        filesize: Array.isArray(size) ? size[index] : size,
                         filepath: path.join(dirName, fileName),
                         uid: ctx.session.sessionUser.accountId,
                         in_time: moment(create_time * 1000).format('YYYY-MM-DD'),
                     });
                     ++index;
+                    if (Array.isArray(size) && index < size.length) {
+                        stream = await parts();
+                    } else {
+                        stream = undefined;
+                    }
                 }
                 const result = await ctx.service.stageBonus.updateDatas({
                     update: [
@@ -315,4 +321,4 @@ module.exports = app => {
     }
 
     return StageExtraController;
-};
+};