const multer = require('koa-multer'); const fs = require('fs'); const path = require('path'); // 设置文件存储位置和上传大小限制 let storage = multer.diskStorage({ destination: function (req, file, cb) { let date = new Date(); let year = date.getFullYear(); let month = date.getMonth() + 1; let day = date.getDate(); let dir = "./public/uploads/" + year + month + day; if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true, }); } cb(null, dir); }, filename: function (req, file, cb) { let fileName = file.fieldname + "-" + Date.now() + path.extname(file.originalname); cb(null, fileName); }, }); const upload = multer({ storage: storage, limits: { fileSize: 5 * 1024 * 1024, // 5MB的文件大小限制 }, }); // 上传图片接口 router.post("/img", upload.single("file"), async (ctx) => { let path = ctx.req.file.path; path = ctx.origin + "" + path.replace("public", ""); path = path.replace(/\\/g, "/"); console.log(path); ctx.body = path; }); // 错误处理程序 app.use((ctx, next) => { return next().catch((err) => { if (err.name === "MulterError") { ctx.status = 400; // 设置响应状态码为400,表示请求错误 ctx.body = "文件大小超过限制"; // 返回给客户端的提示信息 } else { throw err; } }); }); app.listen(3000, () => { console.log('Server is running on port 3000'); });