|
@@ -0,0 +1,59 @@
|
|
|
+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');
|
|
|
+});
|