`

plupload--重写插件自带的grid

阅读更多
client端,自定义table布局
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
 
<div id="container" style="margin-bottom:10px;height:30px;">
    <button id="pickfiles" class="btn btn-primary pull-left">Select files</button>
    <button id="uploadfiles" class="btn btn-primary pull-left" style="margin-left:20px;">Upload files</button>
</div>

<table class="table table-striped table-bordered  table-hover">
	<thead>
		<tr><th>File Name<th>Size</th><th>Status</th><th>Operation</th><tr>
	</thead>
	<tbody id="attachmentData">
		<c:if test="${not empty attachmentList}">
			<c:forEach var="attachment" varStatus="vs" items="${attachmentList}">
				<tr id="item${vs.count}">
					<td class="text-center">
						<c:out value="${attachment.fileName}"></c:out>
					</td>
					<td class="text-center">
						Not Available
					</td>
					<td class="text-center">
						100%
					</td>
					<td class="text-center">
						<a id="${attachment.id}" class="btn btn-danger btn-mini" href='javascript:void(0)' name="${attachment.id}" onclick="deleteById('${attachment.id}')" >
							Delete
						</a>
					</td>
				</tr>
			</c:forEach>
		</c:if>
	</tbody>
</table>
<pre id="console" style="display:none;"></pre>

<script type="text/javascript" src="${path}/resources/js/jquery-ui.min.js"></script>
<script type="text/javascript" src="${path}/resources/js/plupload/plupload.full.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
	var uploader = new plupload.Uploader({
	    runtimes : 'html5,flash,silverlight,html4',	     
	    browse_button : 'pickfiles', // you can pass in id...
	    container: document.getElementById('container'), // ... or DOM Element itself	     
	    url : "${path}/mvc/employee/additionalFiles/upload?employeeId="+$("#employeeId").val(),	     
	    filters : {
	        max_file_size : '10mb',
	        mime_types: [
	            {title : "Image files", extensions : "jpg,gif,png"},
	            {title : "Zip files", extensions : "zip,rar"},
	            {title : "Word files", extensions : "doc,docx"},
	            {title : "PPT files", extensions : "ppt,pps"},
	            {title : "Excel files", extensions : "xlsx"},
	            {title : "Other files", extensions : "pdf"}
	        ]
	    },
	 
	    // Flash settings
	    flash_swf_url : '${path}/resources/js/plupload/Moxie.swf',	 
	    // Silverlight settings
	    silverlight_xap_url : '${path}/resources/js/plupload/Moxie.xap',	     	 
	    init: {
	        PostInit: function(up) {
	            document.getElementById('uploadfiles').onclick = function() {
	                uploader.start();
	                return false;
	            };
	        },
	 
	        FilesAdded: function(up, files) {
	            plupload.each(files, function(file) {
		            var html = "<tr id='"+file.id+"'>"+
									"<td class='text-center'>"+file.name+"</td>"+
									"<td class='text-center'>"+plupload.formatSize(file.size)+"</td>"+									"<td class='text-center' name='status'>0%</td>"+
									"<td class='text-center'>"+
										"<a class='btn btn-danger btn-mini' href='javascript:void(0)' name='remove'>Delete</a>"+
									"</td>"+
							   "</tr>";
	                $("#attachmentData").append(html);
	            });

	            $("a[name='remove']").each(function(){
					$(this).click(function(){
						up.removeFile(up.getFile($(this).parent().parent().attr("id")));
		            	$(this).parent().parent().remove();
					});
			    });
	        },
	 
	        UploadProgress: function(up, file) {
	        	$("#"+file.id).children("td[name='status']").html('<span>' + file.percent + "%</span>");
	        },

	        FileUploaded: function(up, file, response) {
                var attachmentList = $.parseJSON(response.response).attachmentList;
                if(null != attachmentList){
                	var attachment = attachmentList[0];
                	var html = "<a id='"+attachment.id+"' class='btn btn-danger btn-mini' href='javascript:void(0)' name='"+attachment.id+"' onclick='deleteByIdAfterUploaded($(this))' >Delete</a>";
					$("#"+file.id+" td:last-child").html(html);
                }
            },
	 
	        Error: function(up, err) {
	            $('#console').append("<span><b style='color:#ee5f5b;'>Error</b> # <b>" + err.file.name + "</b> : " + err.message+"</span>\n");
	            $('#console').fadeIn();
	        }
	    }
	});
	 
	uploader.init();
});

function deleteById(attachmentId){
	$.post("${path}/mvc/employee/additionalFiles/delete/"+attachmentId,function(result){
		if(!result.result){
			common.showMessage(result.message);
		}else{
			$("#"+attachmentId).parent().parent("tr").remove();
			common.showMessage("delete success!");
		}
	});
}

function deleteByIdAfterUploaded(element){
	var attachmentId = $(element).attr("name");
	deleteById(attachmentId);
}
</script>


server端
@RequestMapping(value = "/additionalFiles/upload", produces = "application/json;charset=UTF-8")
	public void uploadAdditionalFiles(@RequestParam("employeeId") Long employeeId,HttpServletRequest request,HttpServletResponse response) {
		List<AppCommAttachment> attachmentList = new ArrayList<AppCommAttachment>();
		
		MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
		
		MultiValueMap<String, MultipartFile> map = multipartRequest.getMultiFileMap();
		if (map != null) {
			Iterator<String> iter = map.keySet().iterator();
			while (iter.hasNext()) { 
				String str = iter.next();
				List<MultipartFile> fileList = map.get(str);
				for (MultipartFile mpf : fileList) {
					AppCommAttachment attachment = attachmentService.uploadAttachmentUnderEmployee(employeeId, mpf, Boolean.FALSE);
					attachmentList.add(attachment);
				}
			}
		}
		
		try {
			JSONObject jsonObject = new JSONObject();
			jsonObject.put("attachmentList", attachmentList);
			response.getWriter().println(jsonObject.toString());
		} catch (IOException e) {
			 
		}
	}


note that:如果想使用插件自带的table布局,需要引入jquery ui css,并且保证ui的主题一致。
分享到:
评论

相关推荐

    plupload-2.1.2 js、html压缩图片上传图片神器,手机微信网页上传图片必备神器

    在`plupload-2.1.2`压缩包中,可能包含以下内容: 1. `plupload.full.min.js`:完整版的Plupload JavaScript库,包含了所有功能。 2. `plupload.html5.js`、`plupload.flash.js`等:针对不同技术的运行时引擎。 3. ...

    plupload-2.1.2 html5 flash可自定义

    1. **HTML5上传**:Plupload利用HTML5的File API,提供了无插件的文件上传方式。通过拖放、选择文件等交互方式,用户可以方便地上传大文件,并且支持断点续传、多文件并发上传,极大地提高了用户体验。 2. **Flash...

    plupload-3.1.2.zip

    **plupload-3.1.2.zip** 是一个包含 **plupload** 插件的压缩文件,该插件是前端开发中的一个强大工具,尤其在处理文件上传功能时。plupload是一个开源的JavaScript库,专注于提供高效、稳定且功能丰富的上传解决...

    plupload-2.3.6.zip

    这个压缩包“plupload-2.3.6.zip”包含了所有必要的资源和文档,帮助开发者在项目中集成这一功能。 Plupload的核心特性包括: 1. **多浏览器支持**:Plupload支持多种浏览器,包括Internet Explorer、Firefox、...

    plupload-2.3.6

    例如,`plupload.full.min.js`包含了完整功能的Plupload库,而`plupload.queue.js`则可能是一个用于处理文件队列管理的插件。 包文件中可能包含以下内容: 1. `plupload.html`:HTML5运行时的基础上传界面示例。 2....

    plupload-java-servlet-master.zip_java 毕业设计_pitch11j_pocket1yk

    "plupload-java-servlet-master.zip"是一个包含Java实现的plupload上传组件的源代码库,为开发者提供了高效、稳定的文件上传解决方案。本文将深入探讨plupload的原理,JavaServlet的运用,以及如何在毕业设计项目中...

    plupload-2.1.8

    本文将深入探讨Plupload的核心特性、配置选项以及如何在项目中集成和使用它。 1. **核心特性** - **跨浏览器兼容性**:Plupload 支持所有主流浏览器,包括Chrome, Firefox, Safari, Opera, 以及Internet Explorer ...

    plupload-php+批量上传jquery[附加说明书版].zip

    此“plupload-php+批量上传jquery[附加说明书版].zip”压缩包提供了使用Plupload与PHP和jQuery进行批量文件上传的详细资源。 Plupload的核心特性包括: 1. **多浏览器兼容性**:Plupload使用Flash、Silverlight、...

    plupload-php批量上传图片-jquery

    标题中的"plupload-php批量上传图片-jquery"指的是一个基于PHP和jQuery的多文件上传解决方案,使用了名为Plupload的JavaScript库。Plupload是一个强大的、跨浏览器的文件上传组件,支持断点续传、多线程上传、各种...

    plupload-api文档

    plupload简单的API文档,希望能对学习的人有所帮助 一、配置参数 二、各种事件说明 三、Plupload实例的属性 四、Plupload实例的方法 五、文件对象的属性和方法 六、QueueProgress 对象的属性 七、plupload命名空间上...

    plupload-2.3.4 最新js文件

    plupload拥有多种上传方式:HTML5、flash、silverlight以及传统的&lt;input type=”file” /&gt;。Plupload会自动侦测当前...所以你完全不用去操心当前的浏览器支持哪些上传方式,Plupload会自动为你选择最合适的方式。

    plupload-simple-wrapper

    "plupload-simple-wrapper"是针对Plupload的一个简单封装,它旨在简化Plupload在项目中的集成和使用过程。 在JavaScript中,Plupload的复杂性在于它提供了丰富的配置选项和事件处理,这对于开发者来说既是优点也是...

    plupload上传插件

    **plupload上传插件**是一款强大的、跨平台的文件上传组件,它支持多种浏览器和多种技术栈,如Flash、HTML5、Silverlight和Gears,确保在不同环境下都能实现稳定高效的文件上传功能。该插件设计的目标是提供一个统一...

    java_分段上传_断点续传_超大附件上传spring-fileupload-plupload-mysql

    一个可以运行的项目,关于大附件上传这块的关键技术,在mysql中创建 upload 数据库,导入sql文件,运行项目,修改 database....前端用了plupload的js插件 没有加mybatis和spring更具需要自己加 如果满意可以请评论点赞

    plupload-3.1.2

    在实际应用中,Plupload可以通过JavaScript API和不同的插件轻松集成到任何Web项目中。它提供了XMLHttpRequest、IFrame、Flash和Silverlight四种上传方式,根据浏览器能力自动选择最佳方案。开发者还可以利用...

    plupload2.1.3 文件上传控件

    在使用Plupload-2.1.3 压缩包时,您会发现其中包含以下文件和目录: - `examples`:示例代码,展示了如何在实际项目中集成和使用Plupload。 - `docs`:文档资料,包括API参考和使用指南。 - `js`:JavaScript库文件...

Global site tag (gtag.js) - Google Analytics