app.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. let koa = require("koa");
  2. // let app=new koa()
  3. // const websockify = require("koa-websocket");
  4. const app = new koa();
  5. let bodyparser = require("koa-bodyparser");
  6. let json = require("koa-json");
  7. let router = require("koa-router")(); //实例化new路由
  8. let cors = require("koa2-cors");
  9. // let verifToken = require("./token.js");
  10. let static = require("koa-static");
  11. const path = require("path");
  12. let multer = require("koa-multer");
  13. let fs = require("fs");
  14. // 配置静态资源
  15. const staticPath = "./public";
  16. app.use(static(path.join(__dirname, staticPath)));
  17. app.use(bodyparser());
  18. app.use(json());
  19. app.use(cors());
  20. // 设置文件存储位置
  21. let storage = multer.diskStorage({
  22. //设置文件储存位置
  23. destination: function (req, file, cb) {
  24. let date = new Date();
  25. let year = date.getFullYear();
  26. let month = date.getMonth() + 1;
  27. let day = date.getDate();
  28. let dir = "./public/uploads/" + year + month + day;
  29. if (!fs.existsSync(dir)) {
  30. fs.mkdirSync(dir, {
  31. recursive: true,
  32. });
  33. }
  34. cb(null, dir);
  35. },
  36. filename: function (req, file, cb) {
  37. // 设置上传文件名称
  38. let fileName =
  39. file.fieldname + "-" + Date.now() + path.extname(file.originalname);
  40. cb(null, fileName);
  41. },
  42. });
  43. // 创建multer实例并配置存储引擎
  44. const upload = multer({ storage: storage });
  45. // 上传图片接口
  46. router.post("/img", upload.single("file"), async (ctx) => {
  47. // console.log(ctx.req.file);
  48. if (!ctx.req.file) {
  49. // 如果没有上传文件
  50. ctx.status = 400; // 设置响应状态码为400,表示请求错误
  51. ctx.body = "请选择要上传的文件"; // 返回给客户端的提示信息
  52. return;
  53. }
  54. // 检查文件大小
  55. const fileSize = ctx.req.file.size;
  56. // console.log(fileSize);
  57. if (fileSize > 5 * 1024 * 1024) {
  58. // 如果文件大小超过限制
  59. ctx.status = 400; // 设置响应状态码为400,表示请求错误
  60. ctx.body = { // 返回给客户端的提示信息
  61. code:400,
  62. msg:"文件大小超过限制"
  63. }
  64. // 删除超过限制的文件
  65. // fs.unlinkSync(ctx.req.file.path);
  66. fs.unlink(ctx.req.file.path, (err) => {
  67. if (err) {
  68. console.error('文件删除失败', err);
  69. } else {
  70. console.log('文件删除成功');
  71. }
  72. });
  73. return;
  74. }
  75. let path = ctx.req.file.path;
  76. path = ctx.origin + "" + path.replace("public", "");
  77. path = path.replace(/\\/g, "/");
  78. console.log(path);
  79. ctx.body = path;
  80. });
  81. app.use(router.routes()).use(router.allowedMethods());
  82. // 启动 Koa 应用程序
  83. app.listen(7006, () => {
  84. console.log("Server is running on port 7006");
  85. });