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开始的,具体怎么控制文件名还没实现。
相关文章:
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 …...
ORB-SLAM2源码学习:Initializer.cc:Initializer::ComputeF21地图初始化——计算基础矩阵
前言 在平面场景我们通过求解单应矩阵H来求解位姿,但是我们在实际中常见的都是非平面场景, 此时需要用基础矩阵F求解位姿。 1.函数声明 cv::Mat Initializer::ComputeF21(const vector<cv::Point2f> &vP1, const vector<cv::Point2f>…...
C# 读取多条数据记录导出到 Word标签模板之图片输出改造
目录 应用需求 设计 范例运行环境 配置Office DCOM 实现代码 组件库引入 核心代码 调用示例 小结 应用需求 在我的文章《C# 读取多条数据记录导出到 Word 标签模板》里,讲述读取多条数据记录结合 WORD 标签模板输出文件的功能,原有输出图片的…...
NSSCTF web刷题
1 虽然找到了flag,但是我要怎么去改他的代码,让他直接输出flag呢? (好像是要得到他的json代码,这题不让看) 2 wllm应该就是他的密码,进入许可了 意思是服务器可以执行通过POST的请求方式传入参数为wllm的命令,那这就是典型的命令执行,当然,…...
对象排序得到方式
java实现 list 排序的方式,有三种 ① 对象实现Comparable 接口,然后代码里直接调用Collections.sort(list) ②使用内部类Comparator ③使用stream.sort 代码如下 实现Comparable接口的实体类 Data public class Student implements Comparable<Stud…...
Day2 洛谷1035+1047+1085+1089+1150+1151
零基础洛谷刷题记录 Day1 2024.11.18 Day2 2024.11.25 文章目录 零基础洛谷刷题记录1035:题目描述1035:解答代码1035:学习成果1047:题目描述(成功写出)1047:解答代码1047:学习成果1085…...
Linux:进程间通信之进程池和日志
一、进程池的设计 因为每一次我们要进行进程间通信都需要fork,和操作系统做交互是存在很大成本的,所以我们是不是可以提前fork出几个进程,然后当我们想要使用的时候直接去给他们安排任务,这样就减少了系统调用的次数从而提高了内存…...
详细介绍HTTP与RPC:为什么有了HTTP,还需要RPC?
目录 一、HTTP 二、RPC 介绍 工作原理 核心功能 如何服务寻址 如何进行序列化和反序列化 如何网络传输 基于 TCP 协议的 RPC 调用 基于 HTTP 协议的 RPC 调用 实现方式 优点和缺点 使用场景 常见框架 示例 三、问题 问题一:是先有HTTP还是先有RPC&…...
Paddle Inference部署推理(十二)
十二:Paddle Inference推理 (python)API详解 15. PredictorPool 类 PredictorPool 对 Predictor 进行了简单的封装,通过传入 config 和 thread 的数目来完成初始化,在每个线程中,根据自己的线程 id 直接从…...
外观模式 (Facade Pattern)
外观模式 (Facade Pattern) 外观模式是一种 结构型设计模式,通过为子系统中的一组接口提供一个统一的高层接口,简化了子系统的使用,让复杂系统更易于访问。 原理 核心思想: 提供一个 统一的接口 来访问子系统中的多个接口&#…...
人工智能-深度学习-Torch框架-手动构建回归流程
from sklearn.datasets import make_regression import math import random import torch from sklearn.datasets import make_regression: 导入make_regression函数,用于生成回归数据集。 import math: 导入math模块,用于进行数学计算,例如…...
SpringBoot源码解析(五):准备应用环境
SpringBoot源码系列文章 SpringBoot源码解析(一):SpringApplication构造方法 SpringBoot源码解析(二):引导上下文DefaultBootstrapContext SpringBoot源码解析(三):启动开始阶段 SpringBoot源码解析(四):解析应用参数args Sp…...
MySQL面试-1
InnoDB中ACID的实现 先说一下原子性是怎么实现的。 事务要么失败,要么成功,不能做一半。聪明的InnoDB,在干活儿之前,先将要做的事情记录到一个叫undo log的日志文件中,如果失败了或者主动rollback,就可以通…...
nginx配置不缓存资源
方法1 location / {index index.html index.htm;add_header Cache-Control no-cache,no-store;try_files $uri $uri/ /index.html;#include mime.types;if ($request_filename ~* .*\.(htm|html)$) {add_header Cache-Control "private, no-store, no-cache, must-revali…...
PHP导出EXCEL含合计行,设置单元格格式
PHP导出EXCEL含合计行,设置单元格格式,水平居中 垂直居中 public function exportSalary(Request $request){//水平居中 垂直居中$styleArray [alignment > [horizontal > Alignment::HORIZONTAL_CENTER,vertical > Alignment::VERTICAL_CE…...
RabbitMQ 之 死信队列
一、死信的概念 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理 解,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息进行…...
【创建型设计模式】单例模式
【创建型设计模式】单例模式 这篇博客接下来几篇都将阐述设计模式相关内容。 接下来的顺序大概是:单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。 一、什么是单例模式 单例模式是一种创建型设计模式,它保证一个类仅有一个实例&#…...
Charles抓包工具-笔记
摘要 概念: Charles是一款基于 HTTP 协议的代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果来达到分析抓包的目的。 功能: Charles 是一个功能全面的抓包工具,适用于各种网络调试和优化场景。 它…...
Go语言使用 kafka-go 消费 Kafka 消息教程
Go语言使用 kafka-go 消费 Kafka 消息教程 在这篇教程中,我们将介绍如何使用 kafka-go 库来消费 Kafka 消息,并重点讲解 FetchMessage 和 ReadMessage 的区别,以及它们各自适用的场景。通过这篇教程,你将了解如何有效地使用 kafk…...
【论文笔记】Number it: Temporal Grounding Videos like Flipping Manga
🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: Number it: Temporal Grou…...
conda安装cudnn避坑指南:为什么你的CUDA环境总是报错?
Conda环境下的CUDA与cuDNN版本管理实战指南 每次在终端看到CUDA相关的报错信息时,那种感觉就像是在解一道没有标准答案的数学题。特别是当深度学习框架因为CUDA版本不兼容而拒绝运行时,连最简单的import tensorflow都能变成一场噩梦。本文将带你深入理解…...
RStudio Server部署与运维实战:从零搭建到高效管理
1. 环境准备:搭建RStudio Server的基石 在开始部署RStudio Server之前,我们需要确保服务器环境已经准备就绪。就像盖房子需要打地基一样,这一步决定了后续所有工作的稳定性。我遇到过不少因为环境问题导致的安装失败案例,大多数都…...
摆脱论文困扰!2026年实打实好用的专业降AI率平台
2026年论文降AI率工具已从“基础改写”升级为智能优化系统,核心评价维度包括AIGC识别精准度、文本自然度、学术格式合规性、查重适配能力、长文本逻辑性和多语种支持。本次测评覆盖6款主流工具,涵盖中文与英文、全流程与专项功能、免费与付费模式&#x…...
EF Core与SQLite实战:从零构建轻量级数据库应用
1. 为什么选择EF Core与SQLite这对黄金组合 如果你正在开发一个需要本地数据存储的移动应用或桌面小工具,SQLite绝对是你的首选数据库。这个只有几百KB的小家伙,不需要任何服务器配置,直接读写单个文件就能完成所有数据库操作。而EF Core作为…...
Python金融数据获取终极指南:用mootdx高效处理通达信股票数据
Python金融数据获取终极指南:用mootdx高效处理通达信股票数据 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 在量化投资和金融数据分析领域,获取稳定、免费的股票数据一直…...
DanKoe 视频笔记:一人企业构建指南:从零到百万美元的教育业务(每日工作2-4小时)
在本课程中,我们将学习如何构建一个单人教育业务,实现从零到年收入百万美元的目标,同时将每日工作时间控制在2-4小时。我们将探讨其核心理念、实施步骤以及背后的进化逻辑。 概述 传统的创业路径往往伴随着高风险、高投入和漫长的工作时间。…...
OpenClaw自动化报告:Qwen3.5-4B-Claude周报生成与邮件发送
OpenClaw自动化报告:Qwen3.5-4B-Claude周报生成与邮件发送 1. 为什么选择OpenClaw处理周报任务 每周五下午,我都会面临同样的困扰——需要从零散的会议记录、Git提交和即时通讯对话中提取关键信息,整理成一份结构清晰的周报。这个耗时1-2小…...
Win11装Anaconda总卡住?试试这个Miniconda曲线救国法(附清华源配置)
Win11装Anaconda总卡住?试试这个Miniconda曲线救国法(附清华源配置) 最近在Windows 11上安装Anaconda时,不少开发者都遇到了进度条卡死或包提取失败的困扰。这个问题看似简单,却让很多数据科学初学者和Python开发者头疼…...
零基础玩转OpenClaw:ollama GLM-4-7-Flash镜像入门十步曲
零基础玩转OpenClaw:ollama GLM-4-7-Flash镜像入门十步曲 1. 为什么选择OpenClawGLM-4-7-Flash组合 去年我在整理个人知识库时,每天要花2小时重复处理Markdown文档和截图。直到发现OpenClaw这个能像真人一样操作电脑的开源智能体,配合ollam…...
实时数据流处理实战:从滑动窗口算法到Docker部署
用 Python 造一个轻量级流处理引擎,顺便把 Git、Docker、CI/CD 全串起来 前言 你是否有过这样的需求:统计过去 5 秒内 API 的请求次数、监控传感器数据的突变、或者对直播间的弹幕进行限流?这些场景都离不开实时数据流处理。而流处理的核心&…...
