PHP上传超大文件解决方案
一提到大文件上传,首先想到的是啥???
没错,就是修改php.ini文件里的上传限制,那就是upload_max_filesize。修改成合适参数我们就可以进行愉快的上传文件了。当然啦,这是一般情况下的操作,咱们可以考虑下50M的话,这样修改还好使么???
结果不言而喻,如果不信邪的看官可以动手试下。那么这时候我们就要考虑了,为什么会失败呢?通过错误提示或者正常思维来思考的话,我们首先想到的是,这个文件到底有没有被上传到服务器上呢?
嘿嘿,到这里我们就应该知道,限制在哪里了。没错就是表单上传的大小受到了限制。这时候我们就要修改php.ini里的post_max_size参数了。
到这里呢,在网络正常的情况下,基本上不会出现什么问题了。但是,你懂得,我们作为一名programer,怎么可能对非正常情况没有准备。
这时候我们就要修改php运行最大时间max_execution_time还有php接收数据所需的最大时间max_input_time再来就是最大内存memory_limit这三个参数了。修改为适合自己的程序的数值,就可以畅快的运行了。
还有万一中的情况,你的大文件上传程序没有成功运行的话,各位不妨考虑下服务器的限制。我用的Nginx,所以我在我的配置文件中修改了client_max_body_size这个参数。这是用来限制客户端上传文件大小的。
好啦,到这里呢,大部分情况下的文件上传应该都可以解决了。如果还是有问题的话,各位,请与我私信,大家共同解决。如果感觉不错的话,请多多点赞支持哦。。。
这是前端代码:
<body>
<p>up6多文件上传演示页面</p>
<p><a target="_blank" href="db/clear.php">清空数据库</a></p>
<p><a href="filemgr/index.php" target="_blank">文件管理器演示</a></p>
<p><a target="_blank" href="index2.php">单面板演示</a></p>
<p><a href="down2/index.htm" target="_blank">打开下载页面</a></p>
<p>
文件路径:<input id="filePath" type="text" size="50" value="D:\\360safe-inst.exe" />
<input id="btnUpF" type="button" value="上传本地文件" />
</p>
<p>
目录路径:<input id="folderPath" type="text" size="50" value="C:\\Users\\Administrator\\Desktop\\test" />
<input id="btnUpFd" type="button" value="上传本地目录" />
</p>
<div id="FilePanel"></div>
这是后台部分代码和截图:
文件上传完毕,f_complete.
文件初始化,f_create
文件块处理,f_post
文件夹上传完毕,fd_complete
文件夹初始化,fd_create
us
PHP上传代码
<?php
ob_start();
header('Content-Type: text/html;charset=utf-8');
/*
控件每次向此文件POST数据
逻辑:
1.更新数据库进度
2.将文件块数据保存到服务器中。
更新记录:
2014-04-09 增加文件块验证功能。
2014-09-12 完成逻辑。
2014-09-15 修复返回JSONP数据格式错误的问题。
2016-05-31 优化调用,DBFolder::Complete会自动更新文件表信息,所以在此页面不需要再单独调用DBFile::fd_complete
*/
require '../vendor/autoload.php';
require('biz/PathBuilder.php');
require('biz/PathBuilderUuid.php');
require('biz/up6_biz_event.php');
require('model/FileInf.php');
require('utils/fd_scan.php');
use database\DbHelper;
use database\DBFile;
use database\DBFolder;
$id = $_GET["id"];
$uid = $_GET["uid"];
$cbk = $_GET["callback"];//jsonp
$ret = 0;
//参数为空
if ( strlen($uid) > 0
|| strlen($id) >0 )
{
$inf = new FileInf();
$db = new DBFile();
$db->read($id,$inf);
$root = $inf->pathSvr;
$fd = new DBFolder();
$fd->Complete($id, $uid);
$sa = new fd_scan();
$sa->root = $inf;
$sa->scan($inf,$root);
$db->fd_scan($id, $uid);
up6_biz_event::folder_post_complete($id);
$ret = 1;
}
echo "$cbk( $ret )";
header('Content-Length: ' . ob_get_length());
?>
文件和文件夹批量上传

当网络问题导致传输错误时,只需要重传出错分片,而不是整个文件。另外分片传输能够更加实时的跟踪上传进度。

上传成功后打开我们的存储文件夹查看,发现自动生成了几个文件夹,打开文件夹确认上传文件成功

文件及文件夹批量下载
首先勾选多个上传的文件或文件夹,你会发现多了一个下载按钮

然后点击下载按钮,设置下载目录文件夹

设置完成后继续点击下载按钮,页面的右下角出现了下载面板,你选择的文件已出现在目录中,然后点击全部下载,或者单个点击继续,自动加载未上传完的任务。在刷新浏览器或重启电脑后任然可以自动加载未完成的任务

下载完成后打开我们设置的下载目录文件夹,发现需下载的文件或文件夹确认已下载成功,经确认文件夹内的内容与下载文件夹内容一致

产品介绍官网:https://dwz.cn/fgXtRtnu
PHP上传超大文件解决方案的更多相关文章
- B/S上传超大文件解决方案
4GB以上超大文件上传和断点续传服务器的实现 随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求. 但是在很多情况下,平台运营方并没有大文件上 ...
- js上传超大文件解决方案
需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...
- .net上传超大文件解决方案
HTML部分 <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="index.aspx. ...
- Web上传超大文件解决方案
文件上传下载,与传统的方式不同,这里能够上传和下载10G以上的文件.而且支持断点续传. 通常情况下,我们在网站上面下载的时候都是单个文件下载,但是在实际的业务场景中,我们经常会遇到客户需要批量下载的场 ...
- java上传超大文件解决方案
用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 (本文提供全部源码下载,请访问 https://github.com/1269085759/up6-jsp-mysq ...
- HTML5上传超大文件解决方案
一.概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载.在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了.一般断点下载时才用到Range和Content- ...
- Flash上传超大文件解决方案
文件夹数据库处理逻辑 public class DbFolder { JSONObject root; public DbFolder() { this.root = new JSONObject() ...
- jsp上传超大文件解决方案
1,项目调研 因为需要研究下断点上传的问题.找了很久终于找到一个比较好的项目. 在GoogleCode上面,代码弄下来超级不方便,还是配置hosts才好,把代码重新上传到了github上面. http ...
- asp.net上传超大文件解决方案
ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现. 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压. ASP.NE ...
随机推荐
- 2sum问题求解
什么是2sum问题呢?举个例子就明白了:对于数列:[0.1.2.3.4.5.6.7.8.9],求两数相加=9的所有两数的组合,所以结果为:[0.9],[1.8],[2.7],[3.6],[4.5].所 ...
- 推荐几款好用的Chrome插件
'工欲善其事,必先利其器'.优秀的开发者不仅体现在其在技术方面的精通,还体现在其对各种开发工具的充分了解与使用,这会让其开发效率事半功倍.作为一个前端开发者,平时主要是跟浏览器打交道,Chrome浏览 ...
- 计数dp做题笔记
YCJS 3924 饼干 Description 给定一个长度为\(n\)的序列,序列每个元素的取值为\([1,x]\),现在给定\(q\)个区间,求在所有取值方案中,区间最小值的最大值的期望是多少? ...
- 【Android-连接数据库】 直接连接SqlServer数据库
一.测试过的开发环境 Eclispse + SqlServer2008R2 二.下载支持Android的SQL驱动 只能下载1.2.7版本的,将 jtds-1.2.7.jar 包放在android项目 ...
- 基于ElementUI封装可复用的表格组件
<template> <section class="ces-table-page"> <!-- 表格操作按钮 --> <section ...
- java new一个对象的过程中发生了什么
java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载.加载并初始化类完成后,再进行对象的创建工作. 我们先假设是第一次使用该类,这样的话n ...
- 第02组团队Git现场编程实战
GitHub仓库地址 click here 1.组员职责分工 组员 职责分工 黄智.赵镇 百度地图API使用 潘松波.颜志鹏 写分别测评福州人均消费50以下,50-100.100-200.200以上最 ...
- 还是畅通工程(HDU 1233)
某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可 ...
- Linux下更换为阿里yum源
更新日期: 2018-08-06 1.yum源的工作原理 yum是为了解决安装包的依赖关系而生的,如果要源码安装一个软件,需要频繁下载各个包,并解决包的依赖关系.这就好比学门课程,要学会这门课程,就要 ...
- Sublime Text 3中配置Python3的开发环境
在Tools-->Build System-->New Build System 之后弹出如下界面: 将其内容修改为 代码: { "cmd": ["D:/so ...