php实现上传进度条的步骤:首先向服务器端上传一个文件;然后用PHP将这次文件上传的具体信息储存在session当中;接着用Ajax周期性的恳求一个服务器端脚本;最后通过浏览器端的Javascript显示更新进度条即可。

推荐:《PHP视频教程》

实现文件上传进度条基本是借助JS插件或HTML5的File API来完成,其实PHP配合ajax也能实现此功能。

PHP指南对于session上传进度是这样介绍的:

当 session.upload_progress.enabled INI 选项开启时,PHP 能够在每一个文件上传时监测上传进度。 这个信息对上传请求自身并没有什么帮助,但在文件上传时应用可以发送一个POST请求到终端(例如通过XHR)来检查这个状态

当一个上传在处理中,同时POST一个与INI中设置的session.upload_progress.name同名变量时,上传进度可以在$_SESSION中获得。 当PHP检测到这种POST请求时,它会在$_SESSION中添加一组数据, 索引是 session.upload_progress.prefix 与 session.upload_progress.name连接在一起的值。 通常这些键值可以通过读取INI设置来获得,例如

通过将$_SESSION[$key]["cancel_upload"]设置为TRUE,还可以取消一个正在处理中的文件上传。 当在同一个请求中上传多个文件,它仅会取消当前正在处理的文件上传和未处理的文件上传,但是不会移除那些已经完成的上传。 当一个上传请求被这么取消时,$_FILES中的error将会被设置为 UPLOAD_ERR_EXTENSION。

session.upload_progress.freq 和 session.upload_progress.min_freq INI选项控制了上传进度信息应该多久被重新计算一次。 通过合理设置这两个选项的值,这个功能的开销几乎可以忽略不计。

注意:为了使这个正常工作,web服务器的请求缓冲区需要禁用,否则 PHP可能仅当文件完全上传完成时才能收到文件上传请求。 已知会缓冲这种大请求的程序有Nginx。

下面原理介绍:

当浏览器向服务器端上传一个文件时,PHP将要把这次文件上传的具体信息(如上传时间、上传进度等)存储在session当中。然后php上传视频进度条,随着上传的进行,周期性的更新session中的信息。这样,浏览器端就可以使用Ajax周期性的恳求一个服务器端脚本,由该脚本返回session中的进度信息;浏览器端的Javascript即可按照这种信息显示/更新进度条了。

php.ini需配置以下选项

session.upload_progress.enabled = "1"

session.upload_progress.cleanup = "1"

session.upload_progress.prefix = "upload_progress_"

session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS"

session.upload_progress.freq = "1%"

session.upload_progress.min_freq = "1"

其中enabled控制upload_progress功能的开启与否,默认开启;

cleanup 则设置当文件上传的恳求递交完成后,是否去除session的相关信息,默认开启,如果还要调试$_SESSION,则应当设为Off。

prefix 和 name 两项拿来设置进度信息在session中储存的变量名/键值。

freq 和 min_freq 两项拿来设置服务器端对进度信息的更新速率。合理的设置这两项可以减少服务器的负担。

在上传文件的表单中php上传视频进度条,需要为该次上传设置一个标识符,并在接下来的过程中使用该标识符来引用进度信息。

具体的,在上传表单中还要有一个掩藏的input,它的name属性为php.ini中 session.upload_progress.name 的值;它的值为一个由你自己定义的标识符。如下:

代码如下:

PHP(5.4) Session 上传进度 Demo

body{

font-size:1em;

color:#333;

font-family: "宋体", Arial, sans-serif;

}

h1, h2, h3, h4, h5, h6{

font-family: "宋体", Georgia, serif;

color:#000;

line-height:1.8em;

margin:0;

}

h1{ font-size:1.8em; }

#wrap{

margin-top:15px;

margin-bottom:50px;

background:#fff;

border-radius:5px;

box-shadow:inset 0 0 3px #000,

0 0 3px #eee;

}

#header{

border-radius:5px 5px 0 0;

box-shadow:inset 0 0 3px #000;

padding:0 15px;

color:#fff;

background: #333333;

}

#header h1{

color:#fff;

}

#article{

padding:0 15px;

}

#footer{

text-align:center;

border-top:1px solid #ccc;

border-radius:0 0 5px 5px;

}

.progress {

width: 100%;

border: 1px solid #4da8fe;

border-radius: 40px;

height: 20px;

position: relative;

}

.progress .labels {

position: relative;

text-align: center;

}

.progress .bar {

position: absolute;

left: 0;

top: 0;

background: #4D90FE;

height: 20px;

line-height:20px;

border-radius: 40px;

min-width: 20px;

}

.report-file {

display: block;

position: relative;

width: 120px;

height: 28px;

overflow: hidden;

border: 1px solid #428bca;

background: none repeat scroll 0 0 #428bca;

color: #fff;

cursor: pointer;

text-align: center;

float: left;

margin-right:5px;

}

.report-file span {

cursor: pointer;

display: block;

line-height: 28px;

}

.file-prew {

cursor: pointer;

position: absolute;

top: 0;

left:0;

width: 120px;

height: 30px;

font-size: 100px;

opacity: 0;

filter: alpha(opacity=0);

}

.container{

padding-left:0;

padding-right:0;

margin:0 auto;

}

Session上传进度 Demo

php 上传进度条api,php如何实现上传进度条相关推荐

  1. html资源文件记载进度条,HTML5矢量实现文件上传进度条

    在HTML中,在文件上传的过程中,很多情况都是没有任何的提示,这在体验上很不好,用户都不知道到时有没有在上传.上传成功了没有,所以今天给大家介绍的内容是通过HT for Web矢量来实现HTML5文件 ...

  2. java进度条_Java web实时进度条整个系统共用(如java上传、下载进度条、导入、导出excel进度条等)...

    先上图: 文件上传的: 2017-05-04再次改进.在上传过程中用户可以按 Esc 来取消上传(取消当前上传,或者是全部上传)... 2019-03-26更新进度条显示体验 从服务器上压缩下载: 从 ...

  3. Java web实时进度条整个系统共用(如java上传、下载进度条、导入、导出excel进度条等)...

    先上图: 文件上传的: 2017-05-04再次改进.在上传过程中用户可以按 Esc 来取消上传(取消当前上传,或者是全部上传)... 从服务器上压缩下载: 从excel文件导入数据: 从数据库导出e ...

  4. ajax实现上传文件的进度,基于Ajax技术实现文件上传带进度条

    1.概述 在实际的Web应该开发或网站开发过程中,经常需要实现文件上传的功能.在文件上传过程中,经常需要用户进行长时间的等待,为了让用户及时了解上传进度,可以在上传文件的同时,显示文件的上传进度条.运 ...

  5. tp5.1 乐视云上传视频文件(https请求http乐视云上传接口)http网址下上传视频(https API接口)

    一.sdk_php_v2.0.zip 上传视频 网址:http://www.lecloud.com/zh-cn/help/api.html tp5.1 乐视云上传视频文件(https请求http乐视云 ...

  6. 文件上传下载—servlet API实现

    servlet API实现文件上传下载需要的jar包: UploadServlet.java package com.ymw.web.servlet;import java.io.File; impo ...

  7. Plupload文件上传组件使用API

    Plupload有以下功能和特点: 1.拥有多种上传方式:HTML5.flash.silverlight以及传统的<input type="file" />.Plupl ...

  8. .NET Core Web APi大文件分片上传研究

    [导读]前两天发表利用FormData进行文件上传.NET和.NET Core Web APi FormData多文件上传,然后有人问要是大文件几个G上传怎么搞,常见的不就是分片再搞下断点续传,动动手 ...

  9. JS - 文件上传组件WebUploader使用详解1(带进度的文件上传

    一.基本介绍 1,什么是 WebUploader? WebUploader 是由百度公司团队开发的一个以 HTML5 为主,FLASH 为辅的现代文件上传组件. 官网地址:http://fex.bai ...

最新文章

  1. Maya2022基础入门学习教程
  2. 微软和谷歌的人工智能,在SuperGLUE基准测试中超越了人类
  3. MPLS 第一话 :传统IP路由的局限性
  4. JQuery 基础 || 目前 jQuery 有三个大版本||JQuery快速入门
  5. jQuery学习笔记之DOM操作、事件绑定(2)
  6. java 获取mp3 id3v2_MP3文件的ID3V1信息与ID3V2信息结构的分析
  7. input上传图片;input上传file;vue上传图片。
  8. 可以用数学来证明的中文
  9. linux消息总线日志,linux – 解密继续mpt2sas系统日志消息
  10. 2014东师计算机应用基础离线作业,2014秋东师《计算机应用基础》离线作业及答案...
  11. Zen Coding插件
  12. Cookie起源与发展
  13. php重构求圆柱圆锥的体积,圆锥的体积 - 彭阳县第二小学数学教研社区 - 宁夏教育云...
  14. lpb.wifi index.php,lpb(法国lpb是什么品牌)
  15. 新手怎么通过网络推广引流
  16. wpf之pdf的显示
  17. 支付宝沙箱版app登入失败账户不存在问题
  18. 【7】OPencv骨架细化算法
  19. 光计算机pdf,神威bull;太湖之光计算机系统.PDF
  20. 数据库 流量切分_基于hash计算的多层实验流量切分的实现

热门文章

  1. PAT-乙级-1035 插入与归并
  2. 结对项目:黄金点游戏(何珠赵艳)
  3. WebPack 简明学习教程
  4. R - 变化plot字形,嵌入字体以pdf
  5. oracle函数listagg的使用说明(分组后连接字段)
  6. Python基础学习----Requests获取url请求时间:
  7. Java程序猿从笨鸟到菜鸟之(九十二)深入java虚拟机(一)——java虚拟机底层结构具体解释...
  8. SharePoint 2013版本功能对比介绍
  9. WPF--ContextMenu绑定命令的一个问题
  10. [转载] Python中的string模块的学习