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万+

电商项目功能简述

1.电商行业的技术特点 1.技术性 2.技术范围广 3.分布式 4.高并发,集群,负载均衡,高可用 5.海量数据 6.业务复杂 7.系统安全 2.电商行业的模式 B2B:企业到企业,商家到商家.代表:阿里巴巴 B2C:商家到客户.代表:京东.淘宝商城 C2C:客户到客户.淘宝集市 O2O:线上到线下 3.B2C电商系统架构功能模块 4.B2C电商系统架构功能描述 后台管理系统:管理商品、订单、类...

weixin_45116848的博客 9744

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

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

厚积薄发的博客 5712

LightTools 中LCD投影仿真的checkerboard pattern偏振控制技术解析

本文深入解析了在LightTools软件中进行LCD投影仿真时,利用checkerboard pattern(棋盘格图案)结合偏振控制技术来模拟液晶面板像素开关、提升图像对比度的核心方法。文章从实战角度出发,详细拆解了通过设置波片(如1/2波片)和偏振片来操控S光与P光转换的原理,并分享了在LightTools中搭建仿真模型、使用VBA脚本自动化配置参数以提高效率的实用技巧,为光学工程师优化投影系统仿真流程提供了清晰指导。

weixin_29305313的博客 344

电路仿真软件PSIM简介

PSIM的基本使用操作...

qq_55203246的博客 7178

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

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

2501_90646763的博客 674

openeuler在线/离线安装docker服务

openeuler在线/离线安装docker服务

haixuti7的博客 1071

拓网超大文件上传组件

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

Mr_Zang666的博客 207

使用cutoff包基于最小p值法方法计算最佳截断值(基于LIRI基因数据集) R语言

这个方法在生物学研究中具有重要的意义,能够帮助我们从大规模基因表达数据中准确地找到差异显著的基因。在上述代码中,calculate_p_values函数是一个自定义函数,用于计算差异表达基因的p值。在本文中,我们将介绍如何使用R语言的cutoff包来基于最小p值法方法计算最佳的截断值,以便筛选出差异显著的基因。通过以上步骤,我们成功地使用cutoff包基于最小p值法方法计算了最佳的截断值,并筛选出了差异显著的基因。最后,我们可以根据得到的最佳截断值将基因表达数据集进行筛选,提取出差异显著的基因。

ByteKnight的博客 1291

【Windows Server 2019】DNS服务器的配置与管理——DNS正向解析

博文介绍了如何使用正向解析区,包括创建和添加并验证,以及术语 主机记录,别名,邮件交换记录的解释。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 1万+

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

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

MaskText的博客 2009

halcon第二讲:焊点提取

本文要完成的任务是将下图中焊点提取出来,对应于halcon例程Blob分析中的ball.hdev。 dev_open_window (0, 0, 512, 512, 'black', WindowHandle) read_image (Image, 'die_03.png') disp_continue_message (WindowHandle, 'black', 'true') sto...

qq_24946843的博客 7175

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

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

weixin_52050572的博客 475

人工智能训练师三级·模型生命周期真题40题|训练→评估→调优全链路通关

本文为人工智能训练师三级考试真题解析系列第2篇,聚焦模型生命周期全链路(训练→评估→调优)。内容包含40道精选真题,覆盖数据划分、模型训练、评估指标、超参数调优4个核心阶段。重点考察:1)数据集的合理划分方法(留出法、交叉验证);2)模型训练的基本原理;3)关键评估指标(准确率、召回率、F1等)的应用场景;4)超参数调优技术(网格搜索、随机搜索等)。通过真题解析帮助考生系统掌握模型生命周期的闭环迭代方法论,提升从数据准备到模型优化的全流程实践能力。适合备考人工智能训练师三级认证的考生学习参考。

白话机器学习 89

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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

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

IterLoom的博客 616

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

gitblog_00217的博客 373

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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、付费专栏及课程。

余额充值