当前位置: 首页 > news >正文

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开始的,具体怎么控制文件名还没实现。

http://www.cnnetsun.cn/news/544250.html

相关文章:

  • 揭秘曲线上的点:Python中的插值技巧
  • 隔离:每个线程有自己的 Thr
  • 基于Python+Django鲜花店管理系统系统设计与实现
  • ego1开发板大作业vivado实战:交通灯控制系统建模与验证
  • 双主模式I2C在工业系统中的应用:完整示例
  • 数据结构与算法
  • vivado安装教程(Windows):完整版系统配置说明
  • 计算机毕业设计springboot大学四六级英语考试自主学习平台 基于Spring Boot的高校英语四六级在线自学系统 Spring Boot驱动的大学英语等级考试个性化学习平台
  • 解决screen驱动花屏问题的实战经验
  • 工业环境下的PCB封装防护设计:通俗解释
  • 基于Proteus仿真的STC89C52RC最小系统搭建教程
  • JLink驱动安装方法:新手友好型操作指南
  • Linux安装RabbitMQ
  • Linux安装redis
  • Vivado IP核实现SPI通信协议:深度剖析时序配置
  • 探究大数据领域数据工程的分布式计算模式
  • 完整示例:Proteus中构建独立按键+数码管电路
  • 救命神器2026 TOP10 AI论文软件:专科生毕业论文救星测评
  • 快速理解交叉编译工具链三元组:工业嵌入式入门必看
  • Keil5智能感知配置实战:从零实现自动补全
  • 基于nodejs+Vue学生社团管理系统的设计与实现_33x07u9r
  • C++ 结构体(struct)
  • STM32驱动8位并口LCD显示屏操作指南
  • 论文查重优化的现代方法:六款AI工具实现高效文本改写的操作步骤
  • 通过AI技术提升论文原创性:六大智能工具改写文本的实用技巧解析
  • 借助10款AI论文写作工具,高效复现数学建模领域的优秀论文,同时通过智能改写提升内容质量。
  • 提升论文原创性的有效方法:六款AI工具改写文本的实用操作指南
  • 学术查重未通过?五个关键方法帮你快速降低重复比例。
  • 亲测好用9个AI论文软件,助你搞定研究生毕业论文!
  • 论文查重不合格?五个高效步骤帮你快速调整文本。