import express from "express"; import path from "path"; import bodyParser from 'body-parser' import * as fs from "fs"; import { fileURLToPath } from 'url'; import fileUpload from 'express-fileupload' const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const staticDir = path.resolve(__dirname, "test"); const publicDir = path.resolve(__dirname, "../dist"); let startup = false; export async function createServer(port) { if (startup) { return; } const app = express(); app.use(express.static(staticDir)); console.log(publicDir) app.use(express.static(publicDir)); app.use(bodyParser({ limit: '200mb' })) app.use(fileUpload({createParentPath: true})) app.listen(port); startup = true; app.use((req, res, next) => { const paths = req.url.split("/") const scene = paths[1] const filename = paths[paths.length - 1] const p = path.resolve(staticDir, scene, "./attach", filename) if (req.url.includes("/upload")) { return next() } else { fs.writeFileSync(p, JSON.stringify(req.body)) } res.json({code: 0, msg: 'ok'}) }) app.post("/:sceneCode/upload", (req, res) => { const file = (req).files.file const relUrl = `/attach/upload/${file.name}` const absUrl = path.resolve(staticDir, `./${req.params.sceneCode}/${relUrl}`) console.log("上传图片完成路径为", relUrl) file.mv(absUrl, err => { if (err) { res.status(404) res.json({code: 1, msg: 'ok'}) } else { res.json({code: 0, msg: 'ok', data: relUrl}) } }) }) console.log("模拟环境已开启"); }