WebUploader,Baidu文件上传

	WebUploader批量上传的使用
	WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件
	API : https://fex.baidu.com/webuploader/doc/index.html
	
	以下是简单使用-上代码 ——————
	

页面:

<div canwritenull="yes" class="split clearfix fileAtt" id="fileAttid_8">
	<p class="text_essas">
		<span class="fileAttClass9" spn="y">上传附件名称:</span>
		<input type="hidden" value="fileid_8" name="fileid_8" style="background-color: rgb(255, 255, 255);">
		<i type="button" disabled="disabled" name="fileid_8" id="fileid_8" class="layui-btn layui-btn-normal filebutton"></i>
	</p>
	<div class="layui-upload-list" id="demoDiv_fileid_8" style="display: none;">
		<table class="layui-table">
			<thead>
				<tr>
					<th>文件名</th>
					<th>大小</th>
					<th>状态</th>
					<th>操作</th>
				</tr>
			</thead>
			<tbody id="demoList_fileid_8"></tbody>
		</table>
	</div>
</div>

<div canwritenull="yes" class="split clearfix fileAtt" id="fileAttid_9">
	<p class="text_essas">
		<span class="fileAttClass9" spn="y">上传附件名称:</span>
		<input type="hidden" value="fileid_9" name="fileid_9" style="background-color: rgb(255, 255, 255);">
		<i type="button" disabled="disabled" name="fileid_9" id="fileid_9" class="layui-btn layui-btn-normal filebutton"></i>
	</p>
	<div class="layui-upload-list" id="demoDiv_fileid_9" style="display: none;">
		<table class="layui-table">
			<thead>
				<tr>
					<th>文件名</th>
					<th>大小</th>
					<th>状态</th>
					<th>操作</th>
				</tr>
			</thead>
			<tbody id="demoList_fileid_9"></tbody>
		</table>
	</div>
</div>
<link rel="stylesheet" type="text/css" href="${base}/util/webuploader/webuploader.css">
<script type="text/javascript" src="${base}/util/js/jquery.min.js"></script>
<script type="text/javascript" charset="utf-8" src="${base}/util/webuploader/webuploader.min.js"></script>
<#-- 多按钮多文件上传 -->
<script>
	var uploader = WebUploader.create({
	    swf: '${base}/util/webuploader/Uploader.swf',
	    duplicate: true,
        auto: true, // 选完文件后,是否自动上传
        server: "${base}/api/column/upload_auditFile.action", // 文件接收服务端
        pick: ".filebutton", // 选择文件的按钮。可选
        fileVal : "file",
        //线程数
        threads: 10,
        <#--// 只允许选择图片文件。
        accept: {
            title: 'Images',
            extensions: 'gif,jpg,jpeg,bmp,png',
            mimeTypes: 'image/*'
        },
        //单个文件大小限制
        fileSingleSizeLimit: 2000,
        //上传文件数量限制
        fileNumLimit:10,
        //上传前不压缩
        compress:false,-->
	});
	//当文件被加入队列之前触发
	uploader.on('beforeFileQueued', function(file) {
		var fileClass = file.source._refer[0].id;
		var uuid1 = uuid(32, 16);
	    var demoListView = $("#demoList_"+fileClass);
	    var demoDivView = $("#demoDiv_"+fileClass);
	    var fileType = file.name.substr(file.name.indexOf(".")+1);
		var tr = $(['<tr id="upload-'+ uuid1 +'">'
          ,'<td>'+ file.name +'</td>'
          ,'<td>'+ (file.size/1014).toFixed(1) +'kb</td>'
          ,'<td>已上传</td>'
          ,'<td>'
          	,'<input type="hidden" name="fileuuid" labelId="" fliename="'+file.name+'" fileSize="'+(file.size/1014).toFixed(1)+'" fileClass="'+fileClass+'" value="'+uuid1+'">'
            ,'<a href="javascript:void(0)" class="layui-btn layui-btn-xs layui-btn-danger" οnclick="delfile('+"'"+uuid1+"'"+',this,'+"'"+fileType+"'"+')">删除</a>'
          ,'</td>'
        ,'</tr>'].join(''));
        
        demoListView.append(tr);
		demoDivView.css("display","inline");
		<#--  
		if('${CmsId}'!=''){
			log('${CmsId}')
			savefile('${channelId}','${CmsId}');
		}
		-->
    });
    //当一批文件添加进队列以后触发(用来保存文件信息)
    uploader.on('filesQueued', function(file) {
		if('${CmsId}'!=''){
			savefile('${channelId}','${CmsId}');
		}
    });
	<#-- 
	//当有一批文件加载进队列时触发事件
    uploader.on("fileQueued", webFilesQueued);
    //单个文件开始上传
    uploader.on("uploadStart", uploadStart);
    //单个文件上传成功
    uploader.on("uploadSuccess", uploadSuccess);
    //单个文件上传过程中
    uploader.on("uploadProgress", uploadProgress);
    //所有文件上传结束
    uploader.on("uploadFinished", uploadComplete);
    //图片校验不通过时
    uploader.on("error", webFileQueueError);
    //上传出错时
    uploader.on("uploadError",webUploadError);
     -->
    
//在这里用的是我之前文件上传文章相类似的方法 https://blog.csdn.net/qq_36910987/article/details/88895839
//<#-- 获取所有上传文件ID,name -->
function getfileId(){
	var djs = [];
	$("input[name='fileuuid']").each(function(){
		var id = $(this).val();
		var name = $(this).attr("fliename");
		var label = $(this).attr("fileClass");
		var fileSize = $(this).attr("fileSize");
	 	djs.push({'name' : id,'value' : name,'label':label,'filesize':fileSize});
	 	log(djs)
	 });
	return djs;
}
//<#-- 保存文件信息 approval:审批流程ID -->
function savefile(channelId,CmsId){
	var djs = getfileId();
	$.ajax({
        type:'post',
        url : get_web_url()+'/api/column/savefile.action',
        data : {"djs":JSON.stringify(djs),"channelId":channelId,"CmsId":CmsId}, 
        success : function(data){
            resultVO.checkCode(data, function (data) {
        		if(data){
        			log(data);
	        	}else{
        			log("凉凉");
	        	}
            });
        },
        error : function(){
            layeropen('2','发生意外错误!');
        }
    });
}
//<#-- 删除文件 -->
function delfile (id,obj,fileType){
	var conlay = layer.confirm('确定要删除文件吗?', {
		  btn: ['确定','取消'] //按钮
		}, function(){
			$.ajax({
		        type:'post',
		        url : get_web_url()+'/api/column/delfile.action',
		        data : {"id":id,"fileType":fileType}, 
		        success : function(data){
		            resultVO.checkCode(data, function (data) {
		        		if(data){
		        			$(obj).parent().parent().remove();
		        			layer.close(conlay);
			        	}else{
		        			log("凉凉");
			        	}
		            });
		        },
		        error : function(){
		            layeropen('2','发生意外错误!');
		        }
		    });
		},function(){
	        
	  });
}
</script>

JAVA

	/**
	 * 文件上传 WebUploader会循环调用该方法,所以用单文件接收
	 * @param file
	 * @param request
	 * @param response
	 * @throws Exception
	 */
	@RequestMapping("/upload_auditFile")
    public void upload_auditFile(MultipartFile file,HttpServletRequest request,HttpServletResponse response) throws Exception{
        String result =  columnService.upload_auditFile(file);
        JSONObject obj = new JSONObject();
        PrintWriter out = response.getWriter();
        //obj.put("fileName", files[0].getOriginalFilename());
        obj.put("result", result);
        response.setStatus(HttpServletResponse.SC_OK);
        response.setContentType("text/html");
        out.print(obj.toString());
    }

	/**
	 * 保存文件信息
	 * @param request
	 * @param djs
	 * @param channelId
	 * @param CmsId
	 * @return
	 */
	@RequestMapping("/savefile")
	public ResultVO savefile(HttpServletRequest request,String djs,String channelId,String CmsId) {
	    djs = StringEscapeUtils.unescapeHtml4(djs);
	    List<jsonbean> arrayList = (List<jsonbean>) JSON.parseArray(djs, jsonbean.class);
    	return new ResultVO(columnService.savefile(arrayList, channelId, CmsId));
	}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
百度WebUploader是一个基于HTML5的文件上传组件,它支持多文件、分片上传、断点续传等功能。要实现图片批量上传,可以结合PHP来完成。 首先,引入WebUploader插件及其样式文件。然后在HTML中创建一个容器,用来展示上传按钮和上传结果的反馈信息。 接下来,在PHP文件中设置图片上传的相关配置。首先要指定上传的文件类型为图片类型,通过设置`accept`属性为`image/*`实现。 在PHP文件中,使用`$_FILES`来获取上传的文件信息。通过遍历`$_FILES`数组,可以获取到每个文件的相关属性,如文件名、大小、临时路径等。 然后,可以使用PHP的文件处理函数来对每个上传的文件进行处理,比如判断文件大小是否在限定范围内,判断文件类型是否为图片等。可以使用`getimagesize()`函数来判断文件是否为图片。 对于合法的图片文件,可以使用`move_uploaded_file()`函数将其从临时目录移动到指定的目录中,同时生成新的文件名,以防止文件名重复。可以使用`uniqid()`函数生成一个唯一的文件名,拼接上原文件的后缀名。 在处理完所有上传的文件后,可以将结果返回给前端页面。可以通过`json_encode()`函数将结果以JSON格式返回,其中包括上传成功的文件名和上传失败的文件列表。 最后,在前端页面的JavaScript代码中,使用百度WebUploaderAPI方法来实现上传功能。通过监听`fileQueued`事件,将每次选择的文件添加到队列中。可以通过设定`auto=true`来将文件自动上传。 在监听到`uploadSuccess`事件时,可以获取到上传成功的文件名,可以使用JavaScript动态生成一个缩略图,并显示在页面上。 总结起来,实现百度WebUploader图片批量上传PHP,主要包括:引入WebUploader插件和样式文件、在PHP中设置文件上传的配置、通过`$_FILES`获取上传文件的信息、判断上传的文件是否为图片并处理、返回上传结果给前端页面、在前端页面通过监听事件实现上传功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值