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

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.kler.cn/a/455129.html

相关文章:

  • 22.跳过报错(最简) C#例子
  • 使用jvisualvm远程连接Linux服务器上java进程
  • 简单讲解关于微信小程序调整 miniprogram 后, tabbar 找不到图片的原因之一
  • 【FastAPI】中间件
  • Ingress-Nginx Annotations 指南:配置要点全方面解读(下)
  • openai chatgpt原理介绍
  • 智能家居实训室中,STC单片机驱动的“互联网+”智能家居系统设计
  • 【C++动态规划 图论】3243. 新增道路查询后的最短距离 I|1567
  • (ICCV-2023)SVDiff:用于扩散微调的紧凑参数空间
  • c++ 命名空间
  • Android:bug记录(简单)
  • 免费线上签字小程序,开启便捷电子签名
  • vue2中使用 v-html 指令渲染的标签, 标签内绑定的 click 事件
  • VMware替换应该关注哪些因素?越来越多的用户倾向于选择脱离硬件绑定的独立虚拟化软件
  • springboot 使用注解设置缓存时效
  • 自然语言处理(NLP)中的事件检测和事件抽取
  • React性能优化:构建更高效的应用
  • AIDD -人工智能药物设计-RDKit | 基于不同描述符和指纹的机器学习模型预测logP
  • pyqt和pycharm环境搭建
  • 【Python】‌数据库工具类,使用python连接sql server数据库