send API完全参考掌握配置选项与事件处理的实战指南【免费下载链接】sendStreaming static file server with Range and conditional-GET support项目地址: https://gitcode.com/gh_mirrors/send/sendsend是一个功能强大的静态文件流服务器提供Range和条件GET支持帮助开发者轻松构建高效的文件传输服务。本指南将全面解析send API的配置选项和事件处理机制助你快速掌握其核心功能与实战应用。快速入门安装与基础使用一键安装步骤通过npm即可完成send的安装npm install send基础用法示例以下是一个简单的send服务示例展示如何创建一个基础的文件服务器const http require(http); const send require(send); const path require(path); const server http.createServer((req, res) { send(req, req.url, { root: path.join(__dirname, public) }) .pipe(res) .on(error, (err) { res.statusCode err.status || 500; res.end(err.message); }); }); server.listen(3000, () { console.log(Server running on port 3000); });核心配置选项详解root设置文件根目录root选项用于指定文件服务的根目录确保文件路径安全可控。send(req, /files/image.jpg, { root: /path/to/your/files })安全提示始终设置root选项以防止路径遍历攻击如index.js所示。maxAge配置缓存策略通过maxAge选项设置缓存过期时间单位为毫秒帮助优化客户端加载性能send(req, /style.css, { maxAge: 3600000 }) // 缓存1小时send会自动处理Cache-Control头如index.js中的实现。dotfiles处理隐藏文件控制如何处理以点开头的隐藏文件可选值为allow、deny或ignore// 允许访问隐藏文件 send(req, /.env, { dotfiles: allow })默认配置为ignore会返回404错误详见index.js。extensions自动添加文件扩展名当请求的文件不存在时自动尝试添加指定的扩展名// 尝试请求file、file.html、file.txt send(req, /file, { extensions: [html, txt] })实现逻辑可参考index.js。etag与lastModified启用条件请求send默认启用ETag和Last-Modified头优化网络传输send(req, /data.json, { etag: true, lastModified: true })相关实现见index.js。事件处理机制error事件错误处理捕获并处理文件传输过程中的错误send(req, /missing-file.html) .on(error, (err) { console.error(传输错误:, err); res.statusCode err.status || 500; res.end(文件传输失败); }) .pipe(res);错误处理逻辑在index.js中定义。file事件文件找到通知当找到请求的文件时触发可用于记录访问日志send(req, /report.pdf) .on(file, (path, stat) { console.log(正在传输文件: ${path}, 大小: ${stat.size} bytes); }) .pipe(res);stream事件获取可读流获取文件的可读流进行自定义处理send(req, /video.mp4) .on(stream, (stream) { // 对视频流进行处理如添加水印 stream.pipe(watermarkTransform).pipe(res); });流处理实现见index.js。高级功能实战Range请求支持send自动支持HTTP Range请求实现断点续传功能GET /large-file.zip HTTP/1.1 Range: bytes0-999服务器会返回206 Partial Content响应相关实现见index.js。条件GET请求通过If-Modified-Since和If-None-Match头实现缓存验证GET /app.js HTTP/1.1 If-Modified-Since: Wed, 21 Oct 2023 07:28:00 GMT未修改时返回304 Not Modified详见index.js。目录索引功能配置index选项实现目录浏览send(req, /docs/, { index: [index.html, README.md] })当请求目录时send会自动尝试加载指定的索引文件实现逻辑见index.js。最佳实践与注意事项安全配置建议始终设置root选项限制文件访问范围使用dotfiles: deny防止访问敏感隐藏文件避免将send直接暴露到公网建议配合反向代理使用性能优化技巧合理设置maxAge利用客户端缓存对大文件启用Range请求支持断点续传使用gzip压缩减少传输体积需配合其他中间件常见问题解决403错误检查文件权限或dotfiles配置416错误客户端请求的Range无效确保文件大小正确缓存问题使用ETag和Last-Modified确保缓存有效性总结send作为一个轻量级但功能强大的静态文件服务库通过简洁的API提供了丰富的文件传输功能。无论是构建简单的静态网站还是复杂的文件下载服务send都能满足你的需求。通过合理配置选项和事件处理你可以轻松实现高效、安全的文件传输服务。要获取更多示例和详细文档请查看项目的测试文件test/send.js其中包含了各种功能的使用案例。现在就开始使用send提升你的文件服务体验吧【免费下载链接】sendStreaming static file server with Range and conditional-GET support项目地址: https://gitcode.com/gh_mirrors/send/send创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
send API完全参考:掌握配置选项与事件处理的实战指南
发布时间:2026/6/13 5:28:35
send API完全参考掌握配置选项与事件处理的实战指南【免费下载链接】sendStreaming static file server with Range and conditional-GET support项目地址: https://gitcode.com/gh_mirrors/send/sendsend是一个功能强大的静态文件流服务器提供Range和条件GET支持帮助开发者轻松构建高效的文件传输服务。本指南将全面解析send API的配置选项和事件处理机制助你快速掌握其核心功能与实战应用。快速入门安装与基础使用一键安装步骤通过npm即可完成send的安装npm install send基础用法示例以下是一个简单的send服务示例展示如何创建一个基础的文件服务器const http require(http); const send require(send); const path require(path); const server http.createServer((req, res) { send(req, req.url, { root: path.join(__dirname, public) }) .pipe(res) .on(error, (err) { res.statusCode err.status || 500; res.end(err.message); }); }); server.listen(3000, () { console.log(Server running on port 3000); });核心配置选项详解root设置文件根目录root选项用于指定文件服务的根目录确保文件路径安全可控。send(req, /files/image.jpg, { root: /path/to/your/files })安全提示始终设置root选项以防止路径遍历攻击如index.js所示。maxAge配置缓存策略通过maxAge选项设置缓存过期时间单位为毫秒帮助优化客户端加载性能send(req, /style.css, { maxAge: 3600000 }) // 缓存1小时send会自动处理Cache-Control头如index.js中的实现。dotfiles处理隐藏文件控制如何处理以点开头的隐藏文件可选值为allow、deny或ignore// 允许访问隐藏文件 send(req, /.env, { dotfiles: allow })默认配置为ignore会返回404错误详见index.js。extensions自动添加文件扩展名当请求的文件不存在时自动尝试添加指定的扩展名// 尝试请求file、file.html、file.txt send(req, /file, { extensions: [html, txt] })实现逻辑可参考index.js。etag与lastModified启用条件请求send默认启用ETag和Last-Modified头优化网络传输send(req, /data.json, { etag: true, lastModified: true })相关实现见index.js。事件处理机制error事件错误处理捕获并处理文件传输过程中的错误send(req, /missing-file.html) .on(error, (err) { console.error(传输错误:, err); res.statusCode err.status || 500; res.end(文件传输失败); }) .pipe(res);错误处理逻辑在index.js中定义。file事件文件找到通知当找到请求的文件时触发可用于记录访问日志send(req, /report.pdf) .on(file, (path, stat) { console.log(正在传输文件: ${path}, 大小: ${stat.size} bytes); }) .pipe(res);stream事件获取可读流获取文件的可读流进行自定义处理send(req, /video.mp4) .on(stream, (stream) { // 对视频流进行处理如添加水印 stream.pipe(watermarkTransform).pipe(res); });流处理实现见index.js。高级功能实战Range请求支持send自动支持HTTP Range请求实现断点续传功能GET /large-file.zip HTTP/1.1 Range: bytes0-999服务器会返回206 Partial Content响应相关实现见index.js。条件GET请求通过If-Modified-Since和If-None-Match头实现缓存验证GET /app.js HTTP/1.1 If-Modified-Since: Wed, 21 Oct 2023 07:28:00 GMT未修改时返回304 Not Modified详见index.js。目录索引功能配置index选项实现目录浏览send(req, /docs/, { index: [index.html, README.md] })当请求目录时send会自动尝试加载指定的索引文件实现逻辑见index.js。最佳实践与注意事项安全配置建议始终设置root选项限制文件访问范围使用dotfiles: deny防止访问敏感隐藏文件避免将send直接暴露到公网建议配合反向代理使用性能优化技巧合理设置maxAge利用客户端缓存对大文件启用Range请求支持断点续传使用gzip压缩减少传输体积需配合其他中间件常见问题解决403错误检查文件权限或dotfiles配置416错误客户端请求的Range无效确保文件大小正确缓存问题使用ETag和Last-Modified确保缓存有效性总结send作为一个轻量级但功能强大的静态文件服务库通过简洁的API提供了丰富的文件传输功能。无论是构建简单的静态网站还是复杂的文件下载服务send都能满足你的需求。通过合理配置选项和事件处理你可以轻松实现高效、安全的文件传输服务。要获取更多示例和详细文档请查看项目的测试文件test/send.js其中包含了各种功能的使用案例。现在就开始使用send提升你的文件服务体验吧【免费下载链接】sendStreaming static file server with Range and conditional-GET support项目地址: https://gitcode.com/gh_mirrors/send/send创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考