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中截取字符串支持utf-8
Jan 18 PHP
PHP实现MVC开发得最简单的方法――模型
Apr 10 PHP
保存到桌面、设为桌面且带图标的PHP代码
Nov 19 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
Aug 16 PHP
thinkphp判断访客为手机端或PC端的方法
Nov 24 PHP
php生成过去100年下拉列表的方法
Jul 20 PHP
php实现微信公众号主动推送消息
Dec 31 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
Sep 22 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
Nov 26 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
Sep 17 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
Oct 30 PHP
PHP文件操作简单介绍及函数汇总
Dec 11 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基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
2014/07/11 PHP
php读取csv文件并输出的方法
2015/03/14 PHP
javascript 写类方式之四
2009/07/05 Javascript
Javascript 圆角div的实现代码
2009/10/15 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
javascript匿名函数应用示例介绍
2014/03/07 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
JS查找数组中重复元素的方法详解
2017/06/14 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
vue的diff算法知识点总结
2018/03/29 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
详解javascript对数组和json数组的操作
2019/04/15 Javascript
微信小程序入口场景的问题集合与相关解决方法
2019/06/26 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
python将pandas datarame保存为txt文件的实例
2019/02/12 Python
Python之Numpy的超实用基础详细教程
2019/10/23 Python
python中的itertools的使用详解
2020/01/13 Python
python 实现音频叠加的示例
2020/10/29 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
培训研修方案
2014/06/06 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
大班下学期个人总结
2015/02/13 职场文书
2015年部门工作总结范文
2015/03/31 职场文书