<style type="text/css">
.btn{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;
font-weight:bold;">#ff8400;color: #fff;display: inline-block;height: 28px;line-height: 28px;text-align: center;
width: 72px;transition: background-color 0.2s linear 0s;border:none;cursor:pointer;margin:0 0 20px;}
a{cursor: pointer}
.btn:hover{font-weight:bold;">#e95a00;text-decoration: none}
ul,li{list-style: none;padding:0;margin:0}
.ul_pics{float:left}
/*******图片样式*********/
.ul_pics li{float:left;width:120px;height:120px;border:1px solid #ddd;margin:0 5px 10px}
.progress{position:relative;padding: 1px; border-radius:3px; margin:60px 0 0 0;}
.bar {font-weight:bold;">green; display:block; width:0%; height:20px; border-radius:3px; }
.percent{position:absolute; height:20px; display:inline-block;top:3px; left:2%; color:#fff }
.clearfix:after{visibility:hidden; display:block; font-size:0; content:" "; clear:both; height:0}
*:first-child+html .clearfix{zoom:1}
.img_common{width:100%;height: 100%}
</style>
<tr>
<th><label for="">缩略图</label></th>
<td>
<div class="demo clearfix">
<ul id="slt_ul_pics" class="ul_pics clearfix">
<li><img src="./source/modules/myvote/plupload/logo.png" id="slt_btn" class="img_common" /></li>
</ul>
</div>
</td>
</tr>
<tr>
<th><label for="">头部图片</label></th>
<td>
<div class="demo clearfix">
<ul id="top_ul_pics" class="ul_pics clearfix">
<li><img src="./source/modules/myvote/plupload/logo.png" id="top_btn" class="img_common" /></li>
</ul>
</div>
</td>
</tr>
<script type="text/javascript" src="./source/modules/myvote/plupload/plupload.full.min.js"></script>
<script type="text/javascript"> var ids = new Array("slt","top");//多实例上传按钮
$.each(ids,function(i,n){
var self = this.toString();
var bs=self+"_btn";
if(bs=='slt_btn'){
var more=false;
var num=1;
}else{
var more=true;
var num=30;
}
var uploader = new plupload.Uploader({//创建实例的构造方法
runtimes: 'html5,flash,silverlight,html4', //上传插件初始化选用那种方式的优先级顺序
// browse_button: 'btn', // 上传按钮
browse_button : self+"_btn",
url: "{php echo create_url('site/module/uploads', array('name' => 'myvote', 'op' => 'up'));}", //远程上传地址
flash_swf_url: './source/modules/myvote/plupload/Moxie.swf', //flash文件地址
silverlight_xap_url: './source/modules/myvote/plupload/Moxie.xap', //silverlight文件地址
filters: {
max_file_size: '10mb', //最大上传文件大小(格式100b, 10kb, 10mb, 1gb)
mime_types: [//允许文件上传类型
{title: "files", extensions: "jpg,png,gif,jpeg"}
]
},
multi_selection: more, //true:ctrl多文件上传, false 单文件上传
init: {
FilesAdded: function(up, files) { //文件上传前
if ($("#"+self+"_ul_pics").children("li").length > num) {
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>";
});
$("#"+self+"_ul_pics").prepend(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 + ")");//解析返回的json数据
$("#" + file.id).html("<input type='hidden'name='pic[]' value='" + data.pic + "'/><input type='hidden'name='pic_name[]' value='" + data.name_new + "'/><img class='img_common' onclick=delPic('" + data.pic + "','" + file.id + "') src='" + data.pic + "'/>");//追加图片
},
Error: function(up, err) { //上传出错的时候触发
alert(err.message);
}
}
});
uploader.init();
}); function delPic(pic, file_id) { //删除图片 参数1图片路径 参数2 随机数
if (confirm("确定要删除吗?")) {
$.post("{php echo create_url('site/module/uploads', array('name' => 'myvote', 'op' => 'del', 'pic' => '"+pic+"'));}", {pic: pic}, function(data) {
$("#" + file_id).remove()
})
}
}
</script>

php处理

    //图片上传
public function doWebUploads(){
global $_W;
global $_GPC; // 获取query string中的参数
$operation = !empty($_GPC['op']) ? $_GPC['op'] : 'up';
if($operation=='up') {
$typeArr = array("jpg", "png", "gif", "jpeg"); //允许上传文件格式
$path = "uploads/"; //上传路径
if (isset($_POST)) {
$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 > (50000 * 1024)) { //上传大小
echo json_encode(array("error" => "图片大小已超过50000KB!"));
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" => "上传有误,清检查服务器配置!"));
}
}
}else if($operation=='del'){
$pic = $_GPC['pic'];
unlink($pic);
}
}

Plupload 多实例上传 测试可用的更多相关文章

  1. Plupload 上传详细讲解,Plupload 多实例上传,Plupload多个上传按钮--推荐使用

    今天帮朋友解决  Plupload  上传的问题,查了很多资料,资料还是挺全的,但是有点零零散散的,故整理好,合并发出来. 本教程包括: Plupload  上传详细讲. Plupload  多实例上 ...

  2. 通过ALM OTA API获取test case的信息,并上传测试结果到test set中

    ALM提供了OTA接口,可以用来获取和上传测试数据到ALM.比如获取Test case的step信息.上传测试结果到test instance. 在ALM的Help中可以下载相关文档,这里以ALM11 ...

  3. PHP+Ajax+plupload无刷新上传头像代码

    很简单的一款PHP+Ajax+plupload无刷新上传头像代码,兼容性很好,可以直接拿来用.你可以自定义各种类型的文件.本实例中只能上传"jpg", "png" ...

  4. 【技术博客】 关于laravel5.1中文件上传测试的若干尝试

    关于laravel5.1中文件上传测试的若干尝试 作者:ZGJ 版本:v1.0 PM注:本人这两天也正在尝试解决这一问题,如有进展将及时更新这一博客 在我们的软工第二阶段中,我开始着手进行后端控制器的 ...

  5. 分布式文件系统 - FastDFS 配置 Nginx 模块及上传测试

    也不说废话,直接干 上一篇 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署 中安装了 FastDFS 后,并配置启动了 Tracker 和 Storage 服务,已经可以上传文件 ...

  6. 【技术博客】Postman接口测试教程 - 环境、附加验证、文件上传测试

    Postman接口测试教程 - 环境.附加验证.文件上传测试 v1.0 作者:ZBW 前言 继利用Postman和Jmeter进行接口性能测试之后,我们发现Postman作为一款入门容易的工具,其内置 ...

  7. OneNET麒麟座应用开发之四:数据上传测试

    已经测试过OneNET麒麟座开发板了,这次来尝试与OneNET的连接和数据上传.这也是我们测试这块开发办的主要原因,因为在十几种我们有这种将分散的采集点数据上传到后台的需求. 先看看麒麟座这块开发板, ...

  8. angularjs结合plupload实现文件上传

    转载注明:(罗志强的博客) angularjs的指令directive非常好使,可以很方便的结合各种插件,实现很强大的功能. 今天用到了plupload,就拿它举例吧. 正常的plupload用法应该 ...

  9. plupload如何限制上传文件数量,限制只能上传单个文件

    1 完整代码 $(function() { $("#uploader").pluploadQueue({ runtimes : 'html5,gears,flash,silverl ...

随机推荐

  1. 【转】VC++ 也有 Refactoring 功能了

    原文网址:http://blog.csdn.net/yapingxin/article/details/18923095 分类: C++2014-02-04 14:00 2688人阅读 评论(0) 收 ...

  2. ffmpeg C++程序编译时报__cxa_end_catch错误

    解决方法在编译sh中加上 -lsupc++ 即可. 2.STL模块函数找不到,链接失败stdc++/include/bits/stl_list.h:466: error: undefined refe ...

  3. 对widget使用WM_SetCallback

    当我们对widget使用WM_SetCallback拦截并处理一些消息,可能需要在处理完某些消息后继续调用该Widget原来的callback,典型的例子是WM_DELETE,因为几乎所有widget ...

  4. PHP实现IMAP

    //以腾讯企业邮箱做了测试 $mailServer="imap.exmail.qq.com"; //IMAP主机 $mailLink="{{$mailServer}:14 ...

  5. 在Visual Studio调试器中显示Unreal的数据类型的值

    转自:https://blog.csdn.net/witton/article/details/5977766 在Unreal引擎中大量使用了自定义的数据类型如:FName,FString,TArra ...

  6. python mysql模块

    多次使用python操作mysql数据库,先与大家分享一下,关于如何使用python操作mysql数据库.mysql并不是python自带的模块,因此需要下载安装.(在windows平台下介绍该使用过 ...

  7. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛-等式(求$N^2$的因子个数)

    一.题目链接 https://www.nowcoder.com/acm/contest/90/F 二.题面 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言655 ...

  8. C# 查找其他应用程序并打开、显示、隐藏、关闭

    软件开发中,有时迫不得已要用到第三方的软件,这时就涉及到在C#应用程序需要对第三方软件打开.显示.隐藏以及关闭. 下面列举了几个常用的方式 打开应用程序,下面是2种简单用法: 第一种: public ...

  9. Eclipse apk 签名

    Eclipse apk 签名 project>right mouse click>android tool>Export signed Application package cre ...

  10. redis在Web中的使用

    redis是一个键值对数据库,用于缓存数据. redis是一个key-value存储系统.和Memcached数据库类似,它支持存储的value类型相对更多,包括string(字符串).list(链表 ...