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

plc secs半导体通讯协议 PLC 与MES的SECS/GEM通讯方案

符合SEMI E4, E5, E30, E37 的 SECS/GEM通讯方案 专业稳定的产品,持续运行5年都不出错 遵循 SEMI 人机交互设计,提供触摸屏支持让你触手可及。 毫米级的响应,单个messge在5ms以内 MES与PLC之间达到实时性,如采集实时性的数据 每秒支持100条Message以上 快速搭建PLC与MES之间的SECS/GEM桥梁,只需简单配置数据 SECS/GEM介绍 遵循 SEMI 人机交互设计,提供触摸屏支持让你触手可及。 增删改上报数据配置简单,并且一目了然 大量的数据处理.

SECS/GEM 6362

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

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

厚积薄发的博客 5712

避坑指南:合宙Air780EG阿里云一型一密连接时,为什么你的HmacMD5加密总失败?

本文针对合宙Air780EG模组连接阿里云物联网平台时,HmacMD5签名失败的常见问题提供深度解决方案。详细剖析了签名拼接格式、密钥使用、随机数处理及编码大小写等关键陷阱,并结合STM32嵌入式开发环境,给出了串口调试、分步验证及AT指令链路的实用排错技巧,帮助开发者顺利完成一型一密动态注册。

kiwi8的博客 440

rk3399 hdmi HDCP key烧录

1.key转换 使用 hdcp\ProvisioningTool_20170526\KeyConverterV2.02 目录下的KeyConvertor.exe工具将1.4key进行转换 转换后得到 TX00000001.skf 文件,将 TX00000001.skf 文件烧录到开发板上,烧录方式: 打开文件 hdcp\ProvisioningTool_20170526\ProvisioningTool20170526\ProvisioningTool.exe 选择烧录方式与烧录路...

qq_32645109的博客 3859

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

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

2501_90646763的博客 674

Calpuff模型实战:从气象数据预处理到污染物扩散模拟全流程指南

本文提供了一份详尽的Calpuff模型实战指南,涵盖从气象数据预处理、地形处理到污染物扩散模拟与结果可视化的全流程。重点解析了Calmet气象场构建、Calpuff核心参数配置,并与AERMOD模型进行对比,帮助环境工程师与科研人员掌握这一强大的三维非稳态拉格朗日扩散模型,以应对复杂地形、海岸熏烟等实际模拟挑战。

s4t5u6v7的博客 458

拓网超大文件上传组件

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

Mr_Zang666的博客 207

Altium Designer操作技巧(4)——如何利用嘉立创EDA来输出3D封装到AD封装库?

本文介绍了利用嘉立创EDA和FreeCAD软件为PCB元件添加3D模型的方法。首先在嘉立创EDA中搜索元件编号并导出3D模型,然后使用FreeCAD删除3D模型中的PCB基板部分,最后将处理后的3D模型导入PCB封装库并更新到PCB设计中。文章详细讲解了每个步骤的操作流程,包括模型导出、基板删除、位置调整等关键环节,并提供了解决常见问题的方法。通过这种方法,电子工程师可以快速获得元器件的3D模型,提高PCB设计的准确性。

u012526819的博客 2586

谷歌学术用publish-or-perish来对引用量排序

用谷歌学术搜索文献的时候发现不能按照引用量高低进行排序,网上提供了这个软件。 下载地址如下:Publish or Perish (harzing.com)https://harzing.com/resources/publish-or-perish 关于软件界面页面和各种指标的介绍,可以参考中科大的这个PPT: 文献分析软件——publish or perish(精品·公开课件).ppt (book118.com)https://max.book118.com/html/2018/1124/813

m0_48878989的博客 1万+

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

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

MaskText的博客 2009

Unity Tilemap瓦片动态缩放:保持网格尺寸不变的三种实现方案

本文详细探讨了在Unity中实现Tilemap瓦片动态缩放同时保持网格尺寸不变的三种核心方案。针对编辑器静态调整、整体风格化处理及运行时动态控制等不同场景,分别解析了直接修改瓦片属性、调整Tilemap Renderer材质参数以及使用SetTransformMatrix与Matrix4x4矩阵变换的实践方法、优缺点及选型指南,为2D游戏开发提供灵活高效的视觉与交互解决方案。

grass的博客 626

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

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

weixin_52050572的博客 475

【网络与爬虫 61】移动端App爬虫终极指南:Android-iOS应用数据提取黑科技全解析

本文全面解析移动端App爬虫技术,涵盖Android和iOS两大平台的数据提取方法。从基础的网络抓包到高级的代码注入,从自动化测试框架到反调试技术绕过,为开发者提供移动端数据采集的完整解决方案和实战经验。

熵数实验室 3025

VB摄像头监控

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

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

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

IterLoom的博客 616

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

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

gitblog_00217的博客 373

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

余额充值