123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- 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("模拟环境已开启");
- }
|