首页 > PHP教程 > php开发知识文章

PHP 和 plupload.js 进行多图上传并显示进度条的实例代码

本文主要介绍了PHP 和 plupload.js 进行多图上传并显示进度条的实例代码,欢迎大家的学习。

Plupload插件能使用Adobe Flash、Google Gears、HTML5、Microsoft Silverlight、Yahoo BrowserPlus或正常表单Form等多种方法进行文件上传。

Plupload还有其它功能:上传进度显示、图片缩小、多文件上传,拖拽文件到上传控件,文件类型过滤和Chunked上传等。

PHP 和 plupload.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: "upload.php?get=pic", //远程上传地址
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("upload.php?get=delpic&imgurl="+src,function(data){
if(data==1){
$(o).parent().remove();
}
})
}
</script>
</body>
</html>


PHP 代码:

$typeArr = array("jpg", "png", "gif");//允许上传文件格式
$path = "files/";//上传路径
if (isset($_POST)) {
if($_GET['get']=="pic"){
$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,pnggif类型的图片!"));
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']=="delpic"){
$imgsrc = $_GET['imgurl'];
unlink($imgsrc);
echo 1;
}
}

以上就是本文PHP 和 plupload.js 进行多图上传并显示进度条的实例代码的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。