nginx带进度条的上传超大文件

11年写的
[url]http://haoningabc.iteye.com/blog/1711534[/url]
重新整理下
[b]准备----------------------------------------------[/b]

nginx-1.8.1.tar.gz 能过,
1.10不行,会有openssl md5之类的错误

上传
[url]https://github.com/vkholodkov/nginx-upload-module/tree/2.2[/url]
nginx-upload-module-2.2.zip

上传进度条
[url]https://www.nginx.com/resources/wiki/modules/upload_progress/[/url]
使用v0.8.4 的版本
masterzen-nginx-upload-progress-module-v0.8.4-0-g82b35fc.tar.gz

上传进度条客户端:
[url]https://github.com/drogus/jquery-upload-progress[/url]


跑php的fcgi
spawn-fcgi-1.6.3.tar.bz2


yum install openssl-devel zlib-devel prce-devel -y
这些 nginx需要用到的

yum install php php-devel -y

[b]安装-----------------------------------------[/b]

安装spawn-fcgi

tar xvf spawn-fcgi-1.6.3.tar.bz2
./configure --prefix=/usr/local/spawn
make
make install


启动脚本
runcgi.sh

#
!/bin/sh
export PHP_FCGI_MAX_REQUESTS=0
/usr/local/spawn/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u haoning -g haoning -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid



安装nginx
编译nginx

./configure --prefix=/usr/local/nginx --add-module=/opt/masterzen-nginx-upload-progress-module-82b35fc --add-module=/opt/nginx-upload-module-2.2
make
make install


nginx配置文件

worker_processes 1;
events {
worker_connections 1024;
}
http {
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 10;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 8k;
gzip_http_version 1.1;
gzip_comp_level 3;
gzip_types text/css text/xml text/plain application/x-javascript application/xml application/pdf application/rtf application/x-perl application/x-tcl application/msword application/vnd.ms-excel application/vnd.ms-powerpoint application/vnd.wap.xhtml+xml image/x-ms-bmp;
gzip_vary on;
output_buffers 4 32k;
upload_progress_json_output;
upload_progress proxied 1m;
server {
listen 80;
server_name 192.168.139.114;
charset utf-8,gb2312;
client_max_body_size 12000m;
location /upload {
upload_pass @test;
#upload_store /tmp 1;
upload_store /tmp;
upload_store_access user:r;
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_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$";
track_uploads proxied 30s;
}
location @test {
rewrite ^(.*)$ /test.php last;
}

location / {
proxy_set_header Host $http_host;
root html;
index index.html index.htm index.php;
}

location ~ (.*)/x-progress-id:(\w*) {
rewrite ^(.*)/x-progress-id:(\w*) $1?X-Progress-ID=$2;
}
location ^~ /progress {
report_uploads proxied;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
set $path_info "/";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") { set $real_script_name $1;
set $path_info $2;
}
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
root html;
access_log off;
expires 30d;
}
location ~ .*\.(js|css|ico)?$ {
root html;
access_log off;
expires 1h;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param script_name $real_script_name;
fastcgi_param path_info $path_info;
include /usr/local/nginx/conf/fastcgi_params;
}

}


客户端
jquery-upload-progress-master.zip
解压到
/usr/local/nginx/html/
cd /usr/local/nginx/html/jquery-upload-progress-master/example
vim index.html

<body>
<form id="upload" enctype="multipart/form-data" action="index.html" method="post">
<input name="file" type="file"/>
<input type="submit" value="Upload"/>
</form>

改成

<body>
<form id="upload" enctype="multipart/form-data" action="/upload" method="post">
<input name="file" type="file"/>
<input type="submit" value="Upload"/>
</form>

因为nginx配置的/upload

加一个请求返回的php返回值
test.php

<?php
print_r($_POST);
?>



启动

export PHP_FCGI_MAX_REQUESTS=0
/usr/local/spawn/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u haoning -g haoning -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid

/usr/local/nginx/sbin/nginx



cd /tmp
watch -n 1 'ls -lh'
查看上传的文件

chmod -R 777 /tmp

浏览器访问
http://192.168.139.122/jquery-upload-progress-master/example/


效果[img]http://dl2.iteye.com/upload/attachment/0121/9214/3d89d6b5-1a8a-3fef-8f5a-d39299b87430.png[/img]
【实战】突破Nginx限制:精准配置client_max_body_size解决MinIO大文件上传413错误 本文详细解析了如何通过精准配置Nginx的client_max_body_size参数解决MinIO大文件上传时的413错误。从安全防护原理到具体配置方法,包括全局设置、路由精准配置和动态调整技巧,并提供了配置后的必检清单和常见问题解决方案,帮助开发者高效处理大文件上传需求。 阅读详情

相关推荐

Nginx文件上传进度显示

Nginx上传进度模块。整理成文档了。一般情况下都是采用Ajax异步方式,创建一个iframe,在iframe里面把数据以form方式提交给后端的服务器脚本,由服务器脚本(比如PHP)来负责接收上传的数据。上传迚度可以利用Nginx一个uploadprogress模块来获取。

nginx upload progress module

简介   NginxUploadProgressModule是一个可以可以获取文件上传进度的模块,官方文档:HttpUploadProgressModule 原理   nginx作为代理服务,在代理到后端服务之前,将请求内容全部缓存到磁盘上,通过每次上传的一个唯一标识,能够获取当前服务器已经接收的大小。 安装   1.下载模块,通过git或者http,地址:http://github.com/...

weixin_30662109的博客 417

uploadProgress上传显示进度条

uploadProgress上传显示进度条

nginx服务器实现上传下载文件

参考 Nginx文件服务器 使用nginx搭建文件服务器 使用nginx作为文件服务器 nginx搭文件服务器 利用nginx搭建小型的文件服务器 nginx上传模块nginx_upload_module和nginx_uploadprogress_module模块进度显示,如何传递GET参数等。 nginx上传模块nginx_upload_module使用 加上上传模块的nginx编译和配置 n...

黑客三遍猪 2万+

WEB超大文件带进度条上传

JAVA G级别超大文件,带进度条,断点上传

nginx-upload-progress-module.zip

nginx-upload-progress-module 是 Nginx 的文件上传时支持进度显示的扩展模块。 标签:nginx

利用Nginx的上传模块和上传进度模块实现网页上传文件

最近做一个产品,需要实现从网页上传文件给服务器。一般情况下都是采用Ajax异步方式,创建一个iframe,在iframe里面把数据以form方式提交给后端的服务器脚本,由服务器脚本(比如PHP)来负责接收上传的数据。这种方式存在性能和效率的问题。所以,决定采用Nginx的上传模块来完成接收数据的功能,接收完数据后,再去转给后端脚本语言进行后续处理(比如:移动文件、插入文件的信息到数据库中)。同时,

waden的专栏 3万+

手把手教你用Apollo Dreamview调试自动驾驶感知模块(附数据包下载)

本文详细介绍了如何使用百度Apollo平台的Dreamview工具调试自动驾驶感知模块,包括环境配置、数据加载、感知问题定位和多传感器融合调试等关键步骤。通过实战案例和参数调整技巧,帮助开发者快速掌握自动驾驶感知模块的调试方法,提升开发效率。

weixin_29084111的博客 139

nginx搭建文件服务器获取上传进度

接上篇blog,主要讲讲获取上传进度的实现。 参考地址:https://github.com/masterzen/nginx-upload-progress-module 按照其中的说明配置nginx,将其中的例子存成test.html文件。放到nginx 的html目录下。 浏览器运行发现进度条不会变。 经过调试,发现nginx中缺少如下配置: test.html里面缺少 修改后重

厚积薄发的博客 5712

Arduino IDE 2.3.2 配置 UNO R4 WIFI 开发环境避坑指南(附LED矩阵驱动测试)

本文详细介绍了如何在Arduino IDE 2.3.2中配置UNO R4 WIFI开发环境,并提供了LED矩阵驱动的实战指南。从开发环境搭建到硬件连接,再到LED矩阵的初始化和弹球动画实现,手把手教你避开常见配置陷阱,最终实现流畅的动画效果。特别适合刚接触UNO R4 WIFI的开发者快速上手。

weixin_28675839的博客 220

S32K144 ADC硬件触发实战:PDB与TRGMUX配置避坑指南

本文深入解析了S32K144微控制器中ADC硬件触发的两种核心方案:PDB与TRGMUX。通过对比其架构差异、详细配置流程及常见问题排查,提供了从寄存器操作到DMA联动的完整优化指南,旨在帮助开发者解决多通道采样时序不稳、CPU负载过高等实际难题,实现高效稳定的数据采集。

weixin_29168153的博客 442

PHP网页端超大文件分段上传插件怎么选?

【一个武汉大四狗的"大文件上传"自救实录:从"PHP?那不是用来写留言板的吗?“到"哥的上传系统能扛住整个光谷的流量!”】"同学,你简历上写’熟悉PHP开发’,那能说说怎么用PHP实现10G文件分片上传吗?“面试官推了推金丝眼镜,我盯着他胸前的"腾讯云高级工程师"工牌,突然想起上周在实验室把服务器跑崩的壮举——当时整个机房的显示器都闪烁着"502 Bad Gateway”,就像江汉路步行街的霓虹灯集体罢工。

2501_90646763的博客 674

【ArcGIS遇上Python】批量提取多波段影像至单个波段

本案例基于ArcGIS python,将landsat影像的7个波段影像数据,批量提取至单个波段。

智慧空间实验室 2073

拓网超大文件上传组件

目前在公司项目里遇到了需要上传大文件(视频、音频)的情况,特此记录。 此次项目引用了一款名为Webuploader的插件。文章末尾附上下载链接 html代码: <html> <head> <meta charset="utf-8"> <script src="jquery-2.1.1.js"></script&...

Mr_Zang666的博客 207

YOLOv11改进 | Neck篇 | 双向特征金字塔网络BiFPN助力YOLOv11有效涨点

本文给大家带来的改进机制是BiFPN双向特征金字塔网络,其是一种特征融合层的结构,也就是我们本文改进YOLOv11模型中的Neck部分,它的主要思想是通过多层级的特征金字塔和双向信息传递来提高精度。本文给大家带来的结构可以让大家自行调节网络结构大小,同时能够达到一定的轻量化效果,为什么发BiFPN呢因为它算是YOLO系列改进中的常青树了,大家可以借鉴它的双向特征思想来创新自己的Neck结构本文的BiFPN通过yaml文件配置可以让大家自行调配其结构。

Snu77的博客 9099

015、架构_配置文件_管理节点(proxymanager.ini)

该配置文件中的参数在后台配置,两种生效方式:*所有参数重启生效。*部分参数可以使用工具dbtool动态生效。动态生效命令为:dbtool-pm-load-config。配置文件“proxymanager.ini”用于设置元数据管理模块的信息。文件路径为“~/etc”。配置文件“proxymanager.ini”是普通的文本文件。默认值proxymanager-alarmconfutf8.txt。配置错误或不配置,PM无法连接MDS,无法服务。获取元数据失败超时处理时间。异常时请求启动对等回滚。

Oracle/MySQL 到 国产信创数据库|迁移 · 调优 · 信创替换 329

PHP超大文件上传到OSS存储桶,以及断点续传。

流程: 用户选择文件上传后,前端进行文件分片,然后把文件的详细参数提交给后端,因为文件分片后的类型是 blob 类型,所以获取文件信息方法可能会报错。 后端根据参数组合成一个唯一的md5值作为 UploadId(OSS上传文件的唯一标识),把文件的分片保存到本地之后 配置: 这里按照上传文件最大2G来配置的,根据自己的需要来做修改! Nginx: PHP: 前端: 这里以 layui 为例 Html: <script src="__STATIC__/admin/js/sparkmd5/spar

MaskText的博客 2009

大模型应用开发 100 天:Python + LLM 从入门到精通 day01~环境搭建与开发工具

Day 1 正式开启《大模型应用开发 100 天》实战旅程。本文聚焦 AI 开发最容易被忽视却至关重要的环境搭建环节,系统讲解基于 pyenv、uv、VS Code 构建一套可复现、项目隔离的标准化 Python 开发工具链。你将掌握多 Python 版本管理、极速依赖安装、虚拟环境隔离、代码规范配置完整流程,配套可直接运行的环境校验脚本与 Mermaid 架构图,规避版本冲突、环境污染等高频踩坑问题,为后续 99 天 LLM 项目开发筑牢底层基础。来自华北理工大学段一凡的博客文章

段一凡的博客 247

机械制造企业OA如何用HTML+PHP支持设备操作视频的超大文件分片续传?

【一个武汉大四狗的"大文件上传"自救实录:从"PHP?那不是用来写留言板的吗?“到"哥的上传系统能扛住整个光谷的流量!”】"同学,你简历上写’熟悉PHP开发’,那能说说怎么用PHP实现10G文件分片上传吗?“面试官推了推金丝眼镜,我盯着他胸前的"腾讯云高级工程师"工牌,突然想起上周在实验室把服务器跑崩的壮举——当时整个机房的显示器都闪烁着"502 Bad Gateway”,就像江汉路步行街的霓虹灯集体罢工。

weixin_52050572的博客 475

手把手教你学PCIE(10.5)--PCIE故障排除方法的分步排查法介绍

通过以上分步排查法,你可以系统地诊断和解决 PCIe 设备的故障。每个步骤都有助于逐步缩小问题范围,最终找到并解决问题。

MHD0815的博客 1873

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

为什么90%的PHP开发者搞不定大文件上传进度?真相终于曝光

掌握PHP大文件上传进度的实现方法,解决断点续传与实时监控难题。适用于视频、大附件等场景,结合Ajax与session技术精准追踪进度,提升用户体验。方案稳定高效,值得收藏。

IterLoom的博客 616

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

终极指南:如何使用 jQuery File Upload 实现安全高效的文件上传功能

jQuery File Upload 是一个功能强大的 jQuery 插件,专为网页文件上传设计。它提供简单的 API,支持多种文件上传方式,并允许自定义上传功能和行为,是开发者构建文件上传功能的理想选择。 ## 🚀 为什么选择 jQuery File Upload? jQuery File Upload 之所以成为开发者的首选,源于其丰富的特性集: - **多文件上传**:支持同时选择和

gitblog_00217的博客 373

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Rozenite plugin-bridge 类型安全通信指南:事件映射、useRozeniteDevToolsClient 与编译期检查详解

Rozenite 是一个"即插即用"的 React Native DevTools 插件生态,而 **plugin-bridge**(`@rozenite/plugin-bridge`)正是它最底层的通信层。它让运行在 App 内的设备端代码与 DevTools 面板(panel)之间,能用**同一套 TypeScript 类型**安全地互发消息——事件映射(Event Map)一旦定义,发送、监

gitblog_00060的博客 255

WebUploader文件上传组件:分片上传、进度控制与工程化实践详解

文件上传是Web开发中的基础功能,其核心原理涉及前端将文件数据通过HTTP协议传输至服务器。为实现大文件稳定传输与良好用户体验,分片上传技术应运而生,它将大文件分割为多个小块分别上传,有效解决了网络超时、断点续传等工程难题。这项技术的核心价值在于提升了上传的可靠性、可控性与用户体验,广泛应用于网盘、后台管理系统、内容平台等需要处理大量文件上传的场景。本文以经典开源组件WebUploader为例,深入剖析其如何通过分片上传、队列管理和事件驱动等机制,构建健壮的上传管道,并分享其在兼容性处理、秒传实现及与现代前

weixin_34060299的博客 304
上一篇: mobile terminal 笔记
下一篇: websocket上传文件
linux内核控
博客等级 码龄19年 41粉丝 638原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值