diff --git a/Assets/TEngine/Tools~/FileServer/FileSys.js b/Assets/TEngine/Tools~/FileServer/FileSys.js new file mode 100644 index 00000000..2d37bf02 --- /dev/null +++ b/Assets/TEngine/Tools~/FileServer/FileSys.js @@ -0,0 +1,98 @@ +//----------------------------------------------------------------------- +// Copyright (c) TEngine. All rights reserved. +// Author: TangXiao +// Date: 2022/5/14 16:29:13 +//----------------------------------------------------------------------- +const http = require("http"); +const url = require("url"); +const fs = require("fs"); +const path = require("path"); +const mime = { + css: "text/css", + gif: "image/gif", + html: "text/html", + ico: "image/x-icon", + jpeg: "image/jpeg", + jpg: "image/jpeg", + js: "text/javascript", + json: "application/json", + pdf: "application/pdf", + png: "image/png", + svg: "image/svg+xml", + swf: "application/x-shockwave-flash", + tiff: "image/tiff", + txt: "text/plain", + wav: "audio/x-wav", + wma: "audio/x-ms-wma", + wmv: "video/x-ms-wmv", + xml: "text/xml", +}; +const port = 8081; + +const httpServer = http.createServer((request, response) => { + const requestUrl = request.url; + let pathName = url.parse(requestUrl).pathname; + + // 对路径解码,防止中文乱码 + pathName = decodeURI(pathName); + + // 绝对路径 + const filePath = path.resolve(__dirname + pathName); + + // 扩展名 + let ext = path.extname(pathName); + ext = ext ? ext.slice(1) : "unknown"; + + // 未知的类型一律用"text/plain"类型 + const contentType = mime[ext] || "text/plain"; + + // fs.stat()方法用于判断给定的路径是否存在 + fs.stat(filePath, (err, stats) => { + // 路径不存在,则返回404 + if (err) { + response.writeHead(404, { "content-type": "text/html" }); + response.end("