php ajax实现文件上传进度条


Posted in PHP onMarch 29, 2016

本实例是关于php文件上传时进度条的实现,主要采用ajax技术,另外还运用了html5,有需要的朋友可以研究一下。
本实例有两个文件:

upload_form.html:

<!DOCTYPE html>
<html>
<head>
<script>
function _(el){
  return document.getElementById(el);
}
function uploadFile(){
  var file = _("file1").files[0];
  // alert(file.name+" | "+file.size+" | "+file.type);
  var formdata = new FormData();
  formdata.append("file1", file);
  var ajax = new XMLHttpRequest();
  ajax.upload.addEventListener("progress", progressHandler, false);
  ajax.addEventListener("load", completeHandler, false);
  ajax.addEventListener("error", errorHandler, false);
  ajax.addEventListener("abort", abortHandler, false);
  ajax.open("POST", "file_upload_parser.php");
  ajax.send(formdata);
}

function progressHandler(event){
  _("loaded_n_total").innerHTML = "Uploaded "+event.loaded+" bytes of "+event.total;
  var percent = (event.loaded / event.total) * 100;
  _("progressBar").value = Math.round(percent);
  _("status").innerHTML = Math.round(percent)+"% uploaded... please wait";
}

function completeHandler(event){
  _("status").innerHTML = event.target.responseText;
  _("progressBar").value = 0;
}

function errorHandler(event){
  _("status").innerHTML = "Upload Failed";
}

function abortHandler(event){
  _("status").innerHTML = "Upload Aborted";
}
</script>
</head>
<body>
<h2>HTML5 File Upload Progress Bar Tutorial</h2>
<form id="upload_form" enctype="multipart/form-data" method="post">
 <input type="file" name="file1" id="file1"><br>
 <input type="button" value="Upload File" onclick="uploadFile()">
 <progress id="progressBar" value="0" max="100" style="width:300px;"></progress>
 <h3 id="status"></h3>
 <p id="loaded_n_total"></p>
</form>
</body>
</html>

file_upload_parser.php:

<?php
$fileName = $_FILES["file1"]["name"]; // The file name
$fileTmpLoc = $_FILES["file1"]["tmp_name"]; // File in the PHP tmp folder
$fileType = $_FILES["file1"]["type"]; // The type of file it is
$fileSize = $_FILES["file1"]["size"]; // File size in bytes
$fileErrorMsg = $_FILES["file1"]["error"]; // 0 for false... and 1 for true
if (!$fileTmpLoc) { // if file not chosen
  echo "ERROR: Please browse for a file before clicking the upload button.";
  exit();
}
if(move_uploaded_file($fileTmpLoc, "test_uploads/$fileName")){
  echo "$fileName upload is complete";
} else {
  echo "move_uploaded_file function failed";
}
?>

以上就是本文的全部内容,希望对大家的学习有所帮助。

PHP 相关文章推荐
PHP添加MySQL数据记录代码
Jun 07 PHP
PHP多线程抓取网页实现代码
Jul 22 PHP
php 数据库字段复用的基本原理与示例
Jul 22 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
Jan 11 PHP
php操作XML、读取数据和写入数据的实现代码
Aug 15 PHP
php基于GD库画五星红旗的方法
Feb 24 PHP
php显示指定目录下子目录的方法
Mar 20 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
Feb 14 PHP
PHP计算日期相差天数实例分析
Feb 23 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 PHP
php7下的filesize函数
Sep 30 PHP
PHP dirname功能及原理实例解析
Oct 28 PHP
php $_SESSION会员登录实例分享
Jan 19 #PHP
PHP实现163邮箱自动发送邮件
Mar 29 #PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
Mar 29 #PHP
PHP创建word文档的方法(平台无关)
Mar 29 #PHP
PHP中key和current,next的联合运用实例分析
Mar 29 #PHP
CodeIgniter基于Email类发邮件的方法
Mar 29 #PHP
PHP中抽象类、接口的区别与选择分析
Mar 29 #PHP
You might like
php连接数据库代码应用分析
2011/05/29 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
javascript 播放器 控制
2007/01/22 Javascript
javascript 面向对象全新理练之继承与多态
2009/12/03 Javascript
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
Underscore源码分析
2015/12/30 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
2016/06/14 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
2017/09/18 NodeJs
nodejs实现简单的gulp打包
2017/12/21 NodeJs
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
Angular父子组件通过服务传参的示例方法
2018/10/31 Javascript
新版小程序登录授权的方法
2018/12/12 Javascript
基于jQuery拖拽事件的封装
2020/11/29 jQuery
Python绑定方法与非绑定方法详解
2017/08/18 Python
python 引用传递和值传递详解(实参,形参)
2020/06/05 Python
贝玲妃美国官方网站:Benefit美国
2016/08/28 全球购物
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
三个Unix的命令面试题
2015/04/12 面试题
建筑公司文秘岗位职责
2013/11/29 职场文书
给民警的表扬信
2014/01/08 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
教师暑期培训感言
2014/08/15 职场文书
关于拾金不昧的感谢信
2015/01/21 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
面试通知短信
2015/04/20 职场文书
农村环境卫生倡议书
2015/04/29 职场文书