PHP + plupload.js实现多图上传并显示进度条加删除实例代码


Posted in PHP onMarch 06, 2017

PHP + plupload.js JS插件实现多图上传并显示进度条加删除实例,废话不多说,直接上代码

HTML代码:

<!DOCTYPE html> 
 
<head> 
<meta charset="utf-8" /> 
<meta name="viewport" content="initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"> 
<title>多图上传</title> 
<script type="text/javascript" src="jquery.min.js"></script> 
<script type="text/javascript" src="plupload.full.min.js"></script> 
</head> 
<body> 
<style type="text/css"> 
*{ margin:0px; padding:0px; font-family:Microsoft Yahei; box-sizing:border-box; -webkit-box-sizing:border-box;} 
.demo{max-width:640px; margin:0 auto; min-width:320px;} 
.ul_pics{ float:left;} 
.ul_pics li{float:left; margin:0px; padding:0px; margin-left:5px; margin-top:5px; position:relative; list-style-type:none; border:1px solid #eee; width:80px; height:80px;} 
.ul_pics li img{width:80px;height:80px;} 
.ul_pics li i{ position:absolute; top:0px; right:-1px; background:red; cursor:pointer; font-style:normal; font-size:10px; width:14px; height:14px; text-align:center; line-height:12px; color:#fff;} 
.progress{position:relative; margin-top:30px; background:#eee;}  
.bar {background-color: green; display:block; width:0%; height:15px; }  
.percent{position:absolute; height:15px; top:-18px; text-align:center; display:inline-block; left:0px; width:80px; color:#666; line-height:15px; font-size:12px; }  
.demo #btn{ width:80px; height:80px; margin-left:5px; margin-top:5px; border:1px dotted #c2c2c2; background:url(up.png) no-repeat center; background-size:30px auto; text-align:center; line-height:120px; font-size:30px; color:#666; float:left;} 
</style> 
<div class="demo"> 
 <a href="javascript:void(0)" rel="external nofollow" id="btn"></a> 
 <ul id="ul_pics" class="ul_pics clearfix"> 
 </ul>  
</div> 
<script type="text/javascript"> 
var uploader = new plupload.Uploader({    //创建实例的构造方法 
 runtimes: 'html5,flash,silverlight,html4', //上传插件初始化选用那种方式的优先级顺序 
 browse_button: 'btn',           // 上传按钮 
 url: "upimgs.php?get=upimg",        //远程上传地址 
 flash_swf_url: 'plupload/Moxie.swf',    //flash文件地址 
 silverlight_xap_url: 'plupload/Moxie.xap', //silverlight文件地址 
 filters: { 
  max_file_size: '10mb', //最大上传文件大小(格式100b, 10kb, 10mb, 1gb) 
  mime_types: [  //允许文件上传类型 
    {title: "files", extensions: "jpg,png,gif"} 
  ] 
 }, 
 multipart_params:{ },  //文件上传附加参数 
 file_data_name:"upimg", //文件上传的名称 
 multi_selection: false, //true:ctrl多文件上传, false 单文件上传 
 init: { 
  FilesAdded: function(up, files) { //文件上传前 
    if ($("#ul_pics").children("li").length > 5) { 
      alert("您上传的图片太多了!"); 
      uploader.destroy(); 
    } else { 
      var li = ''; 
      plupload.each(files, function(file) { //遍历文件 
        li += "<li id='" + file['id'] + "'><div class='progress'><span class='bar'></span><span class='percent'>上传中 0%</span></div></li>"; 
      }); 
      $("#ul_pics").append(li); 
      uploader.start(); 
    } 
  }, 
  UploadProgress: function(up, file) { //上传中,显示进度条 
  var percent = file.percent; 
    $("#" + file.id).find('.bar').css({"width": percent + "%"}); 
    $("#" + file.id).find(".percent").text("上传中 "+percent + "%"); 
  }, 
  FileUploaded: function(up, file, info) { //文件上传成功的时候触发 
    var data = eval("(" + info.response + ")"); 
    $("#" + file.id).html("<img src='" + this.url + "'/><i onclick='delimg(this)'>x</i><input type='hidden' name='' value='"+ this.url +"'>"); 
  }, 
  Error: function(up, err) { //上传出错的时候触发 
    alert("error"); 
  } 
 } 
}); 
uploader.init(); 
 
function delimg(o){ 
  var src = $(o).prev().attr("src");  
  $.post("upimgs.php?get=delimg&imgurl="+src,function(data){    
    if(data==1){ 
      $(o).parent().remove(); 
    } 
  })  
} 
</script> 
</body> 
</html>

PHP 代码:

<?php 
$typeArr = array("jpg", "png", "gif");//允许上传文件格式  
$path = "files/";//上传路径  
 if (isset($_POST)) {  
  if($_GET['get']=="upimg"){ 
   $name = $_FILES['file']['name'];  
   $size = $_FILES['file']['size'];  
   $name_tmp = $_FILES['file']['tmp_name'];  
   if (empty($name)) {  
     echo json_encode(array("error"=>"您还未选择图片"));  
     exit;  
   }  
   $type = strtolower(substr(strrchr($name, '.'), 1)); //获取文件类型  
     
   if (!in_array($type, $typeArr)) {  
     echo json_encode(array("error"=>"清上传jpg,png或gif类型的图片!"));  
     exit;  
   }  
   if ($size > (1024 * 1024 * 10)) {  
     echo json_encode(array("error"=>"图片大小已超过10MB!"));  
     exit;  
   }  
     
   $pic_name = time() . rand(10000, 99999) . "." . $type;//图片名称  
   $pic_url = $path . $pic_name;//上传后图片路径+名称  
   if (move_uploaded_file($name_tmp, $pic_url)) { //临时文件转移到目标文件夹  
     echo json_encode(array("error"=>"0","pic"=>$pic_url,"name"=>$pic_name));  
   } else {  
     echo json_encode(array("error"=>"上传有误,清检查服务器配置!"));  
   }  
  } 
  if($_GET['get']=="delimg"){ 
    $imgsrc = $_GET['imgurl']; 
    unlink($imgsrc); 
    echo 1; 
  } 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
关于PHP5 Session生命周期介绍
Mar 02 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
May 16 PHP
php将fileterms函数返回的结果变成可读的形式
Apr 21 PHP
PHP用SAX解析XML的实现代码与问题分析
Aug 22 PHP
php计算程序运行时间的简单例子分享
May 10 PHP
codeigniter集成ucenter1.6双向通信的解决办法
Jun 12 PHP
PHP 使用redis简单示例分享
Mar 05 PHP
作为程序员必知的16个最佳PHP库
Dec 09 PHP
WordPress中限制非管理员用户在文章后只能评论一次
Dec 31 PHP
PHP+Ajax异步带进度条上传文件实例
Nov 01 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
May 13 PHP
PHP实现添加购物车功能
Mar 06 #PHP
PHP自动补全表单的两种方法
Mar 06 #PHP
PHP中for循环与foreach的区别
Mar 06 #PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
Mar 05 #PHP
php实现留言板功能
Mar 05 #PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
Mar 04 #PHP
php获取网站根目录物理路径的几种方法(推荐)
Mar 04 #PHP
You might like
PHP 引用是个坏习惯
2010/03/12 PHP
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
2010/06/21 PHP
PHP实现操作redis的封装类完整实例
2015/11/14 PHP
CodeIgniter分页类pagination使用方法示例
2016/03/28 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
2020/04/14 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
js读取json文件片段中的数据实例
2017/03/09 Javascript
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
通过实例解析jQ Ajax操作相关原理
2020/09/23 Javascript
Vue开发中常见的套路和技巧总结
2020/11/24 Vue.js
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
在python3中实现更新界面
2020/02/21 Python
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2015/03/25 面试题
分布式数据库需要考虑哪些问题
2013/12/08 面试题
使用C#编写创建一个线程的代码
2013/01/22 面试题
函授本科毕业自我鉴定
2013/10/09 职场文书
童装店创业计划书
2014/01/09 职场文书
物业管理毕业生的自我评价
2014/02/17 职场文书
岗位职责风险点
2014/03/12 职场文书
信息工作经验交流材料
2014/05/28 职场文书
励志演讲稿200字
2014/08/21 职场文书
2015年社区统计工作总结
2015/04/21 职场文书
物业保安辞职信
2015/05/12 职场文书
辩论会主持词
2015/07/03 职场文书
教学工作总结范文5篇
2019/08/19 职场文书
pytorch 6 batch_train 批训练操作
2021/05/28 Python