news 2026/4/3 4:51:28

nginx服务器实现上传文件功能_使用nginx-upload-module模块

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
nginx服务器实现上传文件功能_使用nginx-upload-module模块
目录
  • conf文件内容如下
  • html文件内容如下
  • 上传文件功能展示

conf文件内容如下

#user nobody; worker_processes 1; error_log /usr/logs/error.log; #error_log /usr/logs/error.log notice; #error_log /usr/logs/error.log info; #pid /usr/logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; client_max_body_size 100m; location / { root /root/nginxShare; index uploadfile.html uploadfile.htm; # 这会使得在访问根目录时默认展示 uploadfile.html } error_page 405 =200 @405; # 配置上传位置 location /upload { if ($request_method = 'GET'){ root /root/nginxShare; } if ($request_method = 'POST'){ upload_pass @test; # 指定上传完成后请求的处理位置 # upload_store /root/nginxShare/upload 1; # 数字1表示启用了一种特殊的文件存储机制,即分散存储 upload_store /root/nginxShare/upload; upload_store_access user:rw; #上传文件的权限,rw表示读写 r只读 #这里写入http报头,pass到后台页面后能获取这里set的报头字段 upload_set_form_field "${upload_field_name}_name" $upload_file_name; upload_set_form_field "${upload_field_name}_content_type" $upload_content_type; upload_set_form_field "${upload_field_name}_path" $upload_tmp_path; #Upload模块自动生成的一些信息,如文件大小与文件md5值 upload_aggregate_form_field "${upload_field_name}_md5" $upload_file_md5; upload_aggregate_form_field "${upload_field_name}_size" $upload_file_size; upload_pass_form_field "^submit$|^description$"; upload_cleanup 400 404 499 500-505; #如果pass页面是以下状态码,就删除此次上传的临时文件 } } # 处理上传完成后的请求 location @test { # 这里可以配置代理到后端服务,或者直接返回响应 # 例如,返回一个简单的文本响应 return 200 'File uploaded successfully!20241104'; # 或者代理到某个后端服务处理上传后的逻辑 # proxy_pass http://localhost:7123;; } } server { listen 9000; server_name localhost; client_max_body_size 100m; charset gbk,utf-8; root /root/nginxShare; location / { auth_basic "Restricted"; autoindex on; autoindex_exact_size on; autoindex_localtime on; } } }

html文件在/root/nginxShare目录下。
上传的文件存放在/root/nginxShare/upload目录下。
上传成功会返回一个文本响应,文本内容为:File uploaded successfully!20241104

html文件内容如下

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文件上传测试</title> </head> <body> <h2>文件上传</h2> <form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file" required> <br> <input type="submit" value="上传"> </form> </body> </html>

上传文件功能展示

运行nginx服务器

mkdir -p /var/log/nginx /var/tmp/nginx ./sbin/nginx -c /etc/nginx/nginx.conf

在浏览器输入:192.168.61.61::80
显示页面如下:

点击选择文件,选择本地文件,点击上传后,会弹出如下页面:

下载该文件后,查看文件内容:

可以看到,文本内容符合预期,接着我们查看/root/nginxShare/upload目录

可以看到,文件已上传成功,不过文件的名字是从1开始的,具体怎么控制文件名还没实现。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 13:26:18

STM32时钟树配置与实时时钟同步完整示例

深入理解STM32时钟树与RTC同步&#xff1a;从原理到实战的完整实现 你有没有遇到过这样的问题&#xff1f;设备运行几天后时间“走偏”了几十秒&#xff0c;或者在低功耗模式下唤醒时发现系统完全“失忆”&#xff0c;连当前是几点都不知道。这在远程监测、智能仪表等对时间敏感…

作者头像 李华
网站建设 2026/3/13 1:38:45

ModbusPoll与Modbus Slave联动测试完整示例

ModbusPoll 与 Modbus Slave 联动测试实战指南&#xff1a;零硬件搭建高效通信验证环境 你是否曾因为现场设备未到货而卡住开发进度&#xff1f; 是否在调试 Modbus 通信时&#xff0c;面对“读不到数据”、“CRC 校验失败”这类问题无从下手&#xff1f; 别急。今天我们就用…

作者头像 李华
网站建设 2026/3/20 22:02:44

IAR中使用宏定义优化条件编译:实践技巧

IAR中巧用宏定义优化条件编译&#xff1a;从工程实践到高效开发你有没有遇到过这样的场景&#xff1f;同一个项目要出两个版本——一个给客户A的“基础版”功能精简&#xff0c;另一个给客户B的“专业版”带加密和远程升级。于是你复制了一份代码&#xff0c;注释掉某些模块&am…

作者头像 李华
网站建设 2026/3/23 20:21:16

大数据GDPR合规的技术支撑体系

大数据GDPR合规的技术支撑体系关键词&#xff1a;大数据、GDPR合规、技术支撑体系、数据保护、隐私管理摘要&#xff1a;本文围绕大数据GDPR合规的技术支撑体系展开&#xff0c;详细介绍了GDPR的背景和重要性&#xff0c;深入剖析了技术支撑体系中的核心概念及其相互关系。通过…

作者头像 李华
网站建设 2026/3/21 1:17:56

模拟I2C读写流程系统学习:入门篇

从零实现模拟I2C&#xff1a;一位嵌入式工程师的实战手记你有没有遇到过这样的场景&#xff1f;项目进入关键阶段&#xff0c;突然发现MCU上唯一的硬件I2C接口已经被OLED屏幕占用&#xff0c;而你现在还要接一个温湿度传感器——偏偏它的地址还和另一个设备冲突。怎么办&#x…

作者头像 李华
网站建设 2026/3/26 16:12:17

系统极客必备:Driver Store Explorer高级功能探索

驱动仓库的“清道夫”&#xff1a;深入驾驭 Driver Store Explorer 的实战艺术你有没有遇到过这样的情况——明明已经卸载了某款显卡驱动&#xff0c;可系统更新后它又“死而复生”&#xff1f;或者一台原本轻快的电脑&#xff0c;渐渐变得启动缓慢、磁盘告急&#xff0c;排查一…

作者头像 李华