PHP+AjaxForm异步带进度条上传文件实例代码


Posted in PHP onAugust 14, 2017

在使用ajaxForm方法之前,首先需要安装form.js的插件,网上有;

一、首先说用法,ajaxForm可以接收0或1个参数,该参数可以是一个变量、一个对象或回调函数,这个对象主要有以下参数:

var object= {
           url:url,//form提交数据的地址
 type:type,  //form提交的方式(method:post/get)
 target:target,//服务器返回的响应数据显示的元素(Id)号
           beforeSerialize:function(){} //序列化提交数据之前的回调函数
 beforeSubmit:function(){},//提交前执行的回调函数
 success:function(){},  //提交成功后执行的回调函数
           error:function(){},       //提交失败执行的函数
 dataType:null, //服务器返回数据类型
 clearForm:true, //提交成功后是否清空表单中的字段值
 restForm:true, //提交成功后是否重置表单中的字段值,即恢复到页面加载时的状态
 timeout:6000     //设置请求时间,超过该时间后,自动退出请求,单位(毫秒)。

}
ajaxForm js的code
$(function(){
  $("form").ajaxForm(object);
})

实例具体代码code

htmlcode

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ROBOTS" content="NOODP">
<title>PHP+Ajax异步带进度条上传文件实例_php</title>
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
<meta name="keywords" content="php,ajax异步上传文件,ajax,异步加载,进度条,php,ajax上传进度条" />
<meta name="description" content="这篇文章主要介绍了PHP+Ajax异步带进度条上传文件实例代码。" />
<!--默认的进度条样式文件
添加一个带有 class .progress 的 <div>。
接着,在上面的 <div> 内,添加一个带有 class .progress-bar 的空的 <div>。
添加一个带有百分比表示的宽度的 style 属性,例如 style="60%"; 表示进度条在 60% 的位置
-->
<link rel="stylesheet" href="public/css/bootstrap.min.css" rel="external nofollow" > 
<script src="public/js/jquery.min.js"></script>
<script src="public/js/jquery.form.js"></script> <!--ajaxForm 提交form表单数据无刷新处理数据-->
</head>
<body>
<div class="uk-container uk-container-center">
  <div class="pk-system-messages"></div>
  <h1 class="uk-h2 uk-text-center" style="margin-top:-100px;">文件上传</h1>
  <div class="pk-system-messages"></div>
  <div class="container-main">
    <h1>文件上传</h1>
    <p>这里只是一个ajax+php+ajaxForm上传文件word文档例子</p>
    <form id='myupload' action='upload.php' method='post' enctype='multipart/form-data'>
      <label for="file">选择上传文件名:</label>
      <input type="file" name="mypic" id="file"><br>
      <input type="submit" name="upload" class="btn btn-success" value="upload">
      <input type='text' name="list" value="555"/>
    </form>
    <div class="progress">
      <div class="progress-bar progress-bar-success progress-bar-striped" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 0%;color:red;">
          <span class="sr-only">10% Complete</span>
      </div>
    </div>
    <div class="files"></div>
    <div class="showimg"></div>
   </div>
</div>
</body>
<script type="text/javascript">
$(function () {
  $("#myupload").ajaxForm({
   dataType:'json',
   beforeSend:function(){ 
     $(".progress").show();
   },
   uploadProgress:function(event,position,total,percentComplete){
     var percentVal = percentComplete + '%';
     $(".progress-bar").width(percentComplete + '%');
     $(".progress-bar").html(percentVal);
     $(".sr-only").html(percentComplete + '%');
   },
   success:function(data){
     $(".progress").hide();
     if(data.error == "empty_name"){
       alert("文件上传非法,上传失败!");
       exit();
     };
     if(data.error == "large"){
       alert("图片上传不能大于2M,上传失败!");
       exit();
     };
     if(data.error == "format"){
       alert("图片格式错误,上传失败");
       exit();
     };
     //$(".files").html("<b>"+data.name+"("+data.size+"k)</b> <span class='delimg' rel='"+data.pic+"'>删除</span>");
     $(".files").html("文件名: "+data.name+"<span class='delimg' rel='"+data.pic+"'> del </span>大小:"+data.size);
     var img = "files/"+data.pic;
     $(".showimg").html("<img src='"+img+"'>");
     alert("上传成功!");
   },
   error:function(){
     alert("上传失败");
   }
  });
  $(".progress").hide();
});
</script>
</html>

php上传上传类upload.class.php文件

<?php
date_default_timezone_set("PRC"); //设置时间区域
//上传类
class upload{
 protected $file_path = "files"; //当前files存储文件夹
 protected $file_size = 5120000; //5M 用户上传
 /**
 *检测文件是否为空
 */
 public function check_file($get_file)
 {
  if (empty($get_file))
  {
    $type = "check_file";
    $arr = array('error'=>'empty_name','type'=>$type);
    echo json_encode($arr);
    exit();
  }
 return true;
 }
 /**
 *检测文件类型
 */
 public function check_type($get_type)
 {
  if (( $get_type == ".docx" ) || ( $get_type == ".doc" )) {
   //这里只是判断上传word文档可以自己添加
  }else{
   $type = "check_type";
   $arr = array('error'=>'format','type'=>$type);
    echo json_encode($arr);
    exit(); 
  }
 return true;
 }
 /**
 *检测文件大小
 */
 public function check_size($get_file)
 {
  if ( $get_file != "" ) {
   if ( $get_file > $this->file_size ) {
     $arr = array('error'=>'large');
     echo json_encode($arr);
     exit();
   }
 }else{
  return false;
  exit();
 }
 return true;
 }
 /**
 *文件保存
 */
 public function save_file($file_type,$file_tmp_name)
 {
 $rand = rand(1000, 9999);
 $pics =date('YmdHis') . $rand . $file_type;
 $path = $this->file_path."/".$pics;
 $result = move_uploaded_file($file_tmp_name, $path);
 if($result){
  return $pics;
 }else{
  return false;
  exit();
 }
 }
}
?>

ajax提交php处理文件upload.php

<?php
include("upload.class.php");
$up_obj = new upload();
//获取上传文件名
$get_fileName = $_FILES['mypic']['name']; 
$get_fileSize = $_FILES['mypic']['size'];
$get_TmpFiles = $_FILES['mypic']['tmp_name'];
$get_fileType = strstr($get_fileName, '.');
$check_result = $up_obj->check_file($get_fileName);
if($check_result){
 $result_type = $up_obj->check_type($get_fileType);//检查文件类型
 if($result_type){
  $result_size = $up_obj->check_size($get_fileSize);//检查文件大小
  if($result_size){
   $pics = $up_obj->save_file($get_fileType,$get_TmpFiles); //文件上传保存   
   $size = round($get_fileSize/1024,2);
     $arr = array(
      'name' => $get_fileName,
       'pic' => $pics,
       'size'=> $size,
       'error' => 2,
       'list' =>$_POST['list']
     );
    if($pics){ //检查文件上传状态
     echo json_encode($arr);
   }  
  }
 }
}
?>

总结

以上所述是小编给大家介绍的PHP+AjaxForm异步带进度条上传文件实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
php实现的MySQL通用查询程序
Mar 11 PHP
PHP学习 变量使用总结
Mar 24 PHP
PHP将两个关联数组合并函数提高函数效率
Mar 18 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
May 27 PHP
PHP常见错误提示含义解释(实用!值得收藏)
Apr 25 PHP
php外部执行命令函数用法小结
Oct 11 PHP
php基于websocket搭建简易聊天室实践
Oct 24 PHP
php对接java现实加签验签的实例
Nov 25 PHP
PHP实现批量删除(封装)
Apr 28 PHP
PHP中模糊查询并关联三个select框
Jun 19 PHP
用PHP的反射实现委托模式的讲解
Mar 22 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 PHP
利用laravel搭建一个迷你博客实战教程
Aug 13 #PHP
利用laravel+ajax实现文件上传功能方法示例
Aug 13 #PHP
Laravel5.5新特性之友好报错以及展示详解
Aug 13 #PHP
php数据序列化测试实例详解
Aug 12 #PHP
PHP新特性之字节码缓存和内置服务器
Aug 11 #PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
Aug 11 #PHP
如何修改Laravel中url()函数生成URL的根地址
Aug 11 #PHP
You might like
PHP读取PDF内容配合Xpdf的使用
2012/11/24 PHP
mac下安装nginx和php
2013/11/04 PHP
yii使用activeFileField控件实现上传文件与图片的方法
2015/12/28 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
jQuery使用手册之 事件处理
2007/03/24 Javascript
AeroWindow 基于JQuery的弹出窗口插件
2011/06/27 Javascript
js三种排序算法分享
2012/08/16 Javascript
浅析jquery某一元素重复绑定的问题
2014/01/03 Javascript
JS实现左右无缝轮播图代码
2016/05/01 Javascript
Javascript动画效果(4)
2016/10/11 Javascript
实例解析jQuery工具函数
2016/12/01 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
jquery获取input输入框中的值
2019/11/13 jQuery
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
python如果快速判断数字奇数偶数
2019/11/13 Python
使用Python实现批量ping操作方法
2020/05/06 Python
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
Kidsroom台湾:来自德国的婴儿用品
2017/12/11 全球购物
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
一套C#面试题
2013/10/09 面试题
社区健康教育实施方案
2014/03/18 职场文书
三问三解心得体会
2014/09/05 职场文书
2014年小学英语教师工作总
2014/12/03 职场文书
大专护理专业自荐信
2015/03/25 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书
安全承诺书格式范本
2015/04/28 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
预备党员转正意见
2015/06/01 职场文书
党员转正意见怎么写
2015/06/03 职场文书
Python机器学习三大件之一numpy
2021/05/10 Python
golang用type-switch判断interface的实际存储类型
2022/04/14 Golang
win11自动弹出虚拟键盘怎么关闭? Win11关闭虚拟键盘的技巧
2023/01/09 数码科技