From f31bf052a160adebb0a462aea2486d5ca66c3add Mon Sep 17 00:00:00 2001 From: xiaoxian521 <1923740402@qq.com> Date: Mon, 14 Nov 2022 20:18:11 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=94=AF=E6=8C=81=E5=A4=9A=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- src/router/http.ts | 64 +++++++++++++++++++++++++++++++++------------- 2 files changed, 47 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index 37f899e..9baa8f7 100644 --- a/.gitignore +++ b/.gitignore @@ -83,4 +83,4 @@ docs .DS_Store upload_tmp -public/images/ \ No newline at end of file +public/files/ \ No newline at end of file diff --git a/src/router/http.ts b/src/router/http.ts index d617fd6..4f2b124 100644 --- a/src/router/http.ts +++ b/src/router/http.ts @@ -9,6 +9,7 @@ import getFormatDate from "../utils/date"; import { connection } from "../utils/mysql"; import { Request, Response } from "express"; import { createMathExpr } from "svg-captcha"; + const utils = require("@pureadmin/utils"); /** 保存验证码 */ @@ -390,26 +391,53 @@ const searchVague = async (req: Request, res: Response) => { // express-swagger-generator中没有文件上传文档写法,所以请使用postman调试 const upload = async (req: Request, res: Response) => { // 文件存放地址 - var des_file = "./public/images/" + req.files[0].originalname; - fs.readFile(req.files[0].path, function (err, data) { - fs.writeFile(des_file, data, function (err) { - if (err) { - res.json({ - success: false, - data: { message: Message[10] }, + const des_file: any = (index: number) => + "./public/files/" + req.files[index].originalname; + let filesLength = req.files.length as number; + let result = []; + + function asyncUpload() { + return new Promise((resolve, rejects) => { + (req.files as Array).forEach((ev, index) => { + fs.readFile(req.files[index].path, function (err, data) { + fs.writeFile(des_file(index), data, function (err) { + if (err) { + rejects(err); + } else { + while (filesLength > 0) { + result.push({ + filename: req.files[filesLength - 1].originalname, + filepath: utils.getAbsolutePath(des_file(filesLength - 1)), + }); + filesLength--; + } + if (filesLength === 0) resolve(result); + } + }); }); - } else { - res.json({ - success: true, - data: { - message: Message[11], - filename: req.files[0].originalname, - filepath: utils.getAbsolutePath(des_file), - }, - }); - } + }); + }); + } + + asyncUpload() + .then((fileList) => { + res.json({ + success: true, + data: { + message: Message[11], + fileList, + }, + }); + }) + .catch(() => { + res.json({ + success: false, + data: { + message: Message[10], + fileList: [], + }, + }); }); - }); }; /**