招聘网站建设公司重庆招聘网官网
2026/2/19 20:27:15 网站建设 项目流程
招聘网站建设公司,重庆招聘网官网,彭水网站建设推广,网站关键词排名分析1. 引言 静态文件#xff08;Static Files#xff09; 是指那些内容在服务器上预先写好、不会随请求动态改变的文件#xff0c;例如#xff1a; HTML 页面#xff08;如 index.html#xff09;CSS 样式表#xff08;如 style.css#xff09;JavaScript 脚本#xff08…1. 引言静态文件Static Files是指那些内容在服务器上预先写好、不会随请求动态改变的文件例如HTML 页面如 index.htmlCSS 样式表如 style.cssJavaScript 脚本如 app.js图片如 logo.png, photo.jpg字体、图标、PDF、音视频等静态文件服务Static File Serving是指 HTTP 服务器能够接收客户端如浏览器对某个路径的请求并自动从本地文件系统中找到对应文件将其内容返回给客户端。例如用户访问 http://example.com/style.css服务器自动去磁盘找 ./www/style.css读取文件内容设置正确的 Content-Type: text/css把文件原样返回给浏览器这个过程无需写任何业务逻辑代码由 HTTP 服务器框架自动完成。一个通用的 HTTP 服务器框架通常会提供静态文件服务功能因为实现简单读文件 设置 MIME 类型即可用途广泛极大简化小型项目部署开发体验好不用额外起 Nginx 就能跑完整 Web 应用符合 HTTP 本质HTTP 最初就是为传输静态文档设计的超文本传输协议。2. 实例使用 cpp-httplib 发布静态文件服务非常简单/* by 01130.hk - online tools website : 01130.hk/zh/regexdso.html */ #include httplib.h #include iostream #include string using namespace std; int main() { httplib::Server svr; svr.set_mount_point(/public, D:/Work/HttpServer/public); std::cout Server listening on http://0.0.0.0:8080/public\n; svr.listen(0.0.0.0, 8080); return 0; }在D:/Work/HttpServer/public这个目录中笔者放置了一些文件那么可以在浏览器通过 URL 地址http://127.0.0.1:8080/public/最小二乘问题详解1线性最小二乘/meta.json访问到具体的文件内容那么是不是所有的文件都支持访问并且加载显示呢这取决于 HTTP 服务器cpp-httplib对文件扩展名与 MIME 类型的映射能力扩展名MIME 类型扩展名MIME 类型csstext/cssmpgaaudio/mpegcsvtext/csvwebaaudio/webmtxttext/plainwavaudio/wavevtttext/vttotffont/otfhtml, htmtext/htmlttffont/ttfapngimage/apngwofffont/woffavifimage/avifwoff2font/woff2bmpimage/bmp7zapplication/x-7z-compressedgifimage/gifatomapplication/atomxmlpngimage/pngpdfapplication/pdfsvgimage/svgxmlmjs, jstext/javascriptwebpimage/webpjsonapplication/jsonicoimage/x-iconrssapplication/rssxmltifimage/tifftarapplication/x-tartiffimage/tiffxhtml, xhtapplication/xhtmlxmljpeg, jpgimage/jpegxsltapplication/xsltxmlmp4video/mp4xmlapplication/xmlmpegvideo/mpeggzapplication/gzipwebmvideo/webmzipapplication/zipmp3audio/mp3wasmapplication/wasm3. 扩展set_mount_point是 cpp-httplib 用于发布静态文件服务的接口将设置的目录挂载到 HTTP Get 请求。如果将代码写的更加本质一点就是读取相应的数据将数据填充到 Get 请求返回/* by 01130.hk - online tools website : 01130.hk/zh/regexdso.html */ #include httplib.h #include filesystem // C17 #include fstream #include iostream #include nlohmann/json.hpp #include string using namespace std; namespace fs std::filesystem; // 辅助函数根据文件扩展名返回 MIME 类型 std::string get_mime_type(const std::string filename) { if (filename.ends_with(.md)) { return text/markdown; charsetutf-8; } else if (filename.ends_with(.json)) { return application/json; charsetutf-8; } else if (filename.ends_with(.txt)) { return text/plain; charsetutf-8; } // 默认 fallback return application/octet-stream; } int main() { httplib::Server svr; std::u8string docRoot u8D:/Work/HttpServer/public/最小二乘问题详解1线性最小二乘; // 路由GET /files/filename svr.Get(R(/files/([^/])), [](const httplib::Request req, httplib::Response res) { // 提取文件名来自正则捕获组 std::string filename req.matches[1]; std::u8string u8Filename(filename.begin(), filename.end()); // 安全检查防止路径穿越如 ../../etc/passwd if (filename.find(..) ! std::string::npos || filename.empty()) { res.status 400; res.set_content(R({error: Invalid filename}), application/json); return; } // 构建完整路径 fs::path filepath fs::path(docRoot) / u8Filename; // 检查文件是否存在且是普通文件 if (!fs::exists(filepath) || !fs::is_regular_file(filepath)) { res.status 404; res.set_content(R({error: File not found}), application/json); return; } // 读取文件内容 std::ifstream file(filepath, std::ios::binary); if (!file) { res.status 500; res.set_content(R({error: Failed to read file}), application/json); return; } std::string content((std::istreambuf_iteratorchar(file)), std::istreambuf_iteratorchar()); // 设置 Content-Type std::string mime get_mime_type(filename); res.set_content(content, mime); }); std::cout Server listening on http://0.0.0.0:8080/files/filename\n; svr.listen(0.0.0.0, 8080); return 0; }如果我们在浏览器地址访问http://127.0.0.1:8080/files/最小二乘问题详解1线性最小二乘.md就可以看到最小二乘问题详解1线性最小二乘.md这个文件的内容这是因为这里将 .md 文件的 MIME 设置成了 text/markdown浏览器会按照文本格式显示 .md 文件的内容。而在set_mount_point接口中由于不识别 .md 格式类型MIME 类型会回退回 application/octet-stream 也就是二进制文件/未知类型浏览器会强制下载。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询