JS上传组件FileUpload自定义模板的使用方法
FileUpload是国外一个纯javascript写的大文件上传组件,该组件支持分片上传,断点续传,多文件等功能。
下面就为大家分享FileUpload上传组件自定义模板(FineUploaderBasic)的使用方法:
以下是配置代码:
前端配置:
<!--定义按钮-->
<divid="basic_uploader_fine"><iclass="icon-uploadicon-white"></i>选择文件</div>
<divid="triggerUpload">点击上传</div>
<!--显示信息-->
<divid="messages"></div>
<divid="cancelUpload"class="buttons">取消</div>
<divid="cancelAll"class="buttons">取消全部</div>
<divid="pauseUpload"class="buttons">暂停上传</div>
<divid="continueUpload"class="buttons">继续上传</div>
<script>
$(document).ready(function(){
$fub=$('#basic_uploader_fine');
$messages=$('#messages');
varuploader=newqq.FineUploaderBasic({
debug:true,//开启调试模式
multiple:true,//多文件上传
button:$fub[0],//上传按钮
autoUpload:false,//不自动上传则调用uploadStoredFiless方法手动上传
//验证上传文件
validation:{
allowedExtensions:['jpeg','jpg','png','zip','rar'],
},
//远程请求地址(相对或者绝对地址)
request:{
endpoint:'server/endpoint.php'
},
retry:{
enableAuto:false//defaultstofalse自动重试
},
chunking:{
enabled:true,
partSize:500,//分组大小,默认为2M
concurrent:{
enabled:true//开启并发分组上传,默认并发3个
},
success:{
endpoint:"server/endpoint.php?done"//分组上传完成后处理
}
},
//回调函数
callbacks:{
//文件开始上传
onSubmit:function(id,fileName){
$messages.append('<divid="file-'+id+'"class="alert"style="margin:20px00">'+fileName+'</div>');
},
onUpload:function(id,fileName){
$('#file-'+id).addClass('alert-info')
.html('<imgsrc="client/loading.gif"alt="Initializing.Pleasehold.">'+
'Initializing'+
'“'+fileName+'”');
},
//进度条
onProgress:function(id,fileName,loaded,total){
if(loaded<total){
progress=Math.round(loaded/total*100)+'%of'+Math.round(total/1024)+'kB';
$('#file-'+id).removeClass('alert-info')
.html('<imgsrc="http://img.zcool.cn/community/01ff2756629d096ac725b2c8e95102.gif"width="50px"height="50px;"alt="Inprogress.Pleasehold.">'+
'上传文件中......'+progress);
}else{
$('#file-'+id).addClass('alert-info')
.html('<imgsrc="http://img.zcool.cn/community/01ff2756629d096ac725b2c8e95102.gif"width="50px"height="50px;"alt="Saving.Pleasehold.">'+
'上传文件中......');
}
},
//上传完成后
onComplete:function(id,fileName,responseJSON){
if(responseJSON.success){
varimg=responseJSON['target']
$('#file-'+id).removeClass('alert-info')
.addClass('alert-success')
.html('<iclass="icon-ok"></i>'+
'上传成功!'+
'“'+fileName+'”'
);
}else{
$('#file-'+id).removeClass('alert-info')
.addClass('alert-error')
.html('<iclass="icon-exclamation-sign"></i>'+
'Errorwith'+
'“'+fileName+'”:'+
responseJSON.error);
}
},
onError:function(id,name,reason,maybeXhrOrXdr){
console.log(id+'_'+name+'_'+reason);
},
}
});
//手动触发上传上传
$('#triggerUpload').click(function(){
uploader.uploadStoredFiles();
});
//取消某一个上传
$('#cancelUpload').click(function(){
uploader.cancel(0);
});
//取消所有未上传的文件
$('#cancelAll').click(function(){
//单个文件上传没有作用因为已经在上传的不能使用这个cancelAll取消上传
uploader.cancelAll();
});
//暂停上传某个文件
$('#pauseUpload').click(function(){
uploader.pauseUpload(0);
});
//继续上传
$('#continueUpload').click(function(){
uploader.continueUpload(0);
});
});
</script>
php代码:
//handler.php文件官网上下
require_once"handler.php";
$uploader=newUploadHandler();
//文件类型限制
$uploader->allowedExtensions=array();
//文件大小限制
$uploader->sizeLimit=null;
//上传文件框
$uploader->inputName="qqfile";
//定义分组文件存放位置
$uploader->chunksFolder="chunks";
$method=$_SERVER["REQUEST_METHOD"];
//上传目的文件夹(由于原来的文件存放规则不符合我们的需求所以修改了handler.php的代码添加了个文件夹生成规则【你也可以自定义】)
$uploadDirectory=$uploader->getPathName('member_avatar');
if($method=="POST"){
header("Content-Type:text/plain");
//分组上传完成后对分组进行合并
if(isset($_GET["done"])){
$result=$uploader->combineChunks($uploadDirectory);//合并分组文件
}else{
//开始上传文件
$result=$uploader->handleUpload($uploadDirectory);
//获取上传的名称
$result["uploadName"]=$uploader->getUploadName();
}
echojson_encode($result);
}
//删除文件处理
elseif($method=="DELETE"){
$result=$uploader->handleDelete($uploadDirectory);
echojson_encode($result);
}
else{
header("HTTP/1.0405MethodNotAllowed");
}
以上是一个简单的自定义模板的配置,希望对大家的学习有所帮助。