SpringMvc+jQuery 文件拖拽上传、选择上传

最近做了个简易的文件上传功能,jsp版本的,后续会完善更多的功能,不过现在已经能用了,需要的小伙伴,直接引用下面的文件内容直接copy到自己的项目中就ok了,效果如图:

fileupload.css:

.fileupload_box {
	position:relative;
	width: 100%;
	height: 100%;
	border: 3px dashed #E5E5E5;
	text-align: center;
	z-index: 2000;
	cursor: pointer;
	margin:0 auto;
}

.fileupload_message {
	position: absolute;
	font-size: 15px;
	color: #999;
	font-weight: normal;
	height:30px;
	top:20px;
	width: 100%;
}
.odao_browser{
	position:absolute;
	width:50%;
	height:36px;
	line-height:36px;
	left:25%;
	bottom:10px;
	-moz-border-radius: 3px; /* Firefox */
  	-webkit-border-radius: 3px; /* Safari 和 Chrome */
  	border-radius:3px; /* Opera 10.5+, 以及使用了IE-CSS3的IE浏览器 */
  	background:#5c6bc0;
  	color:white;
  	cursor: pointer;
}
.odao_browser input {
	position:absolute;
	top:0;
	width:100%;
	height:100%;
	opacity: .0;
	filter: alpha(opacity= 0);
	direction: ltr;
	cursor: pointer;
}

odao_fileupload_plugin.js:

(function($) {
	$.fn.odao_fileupload=function(setting){
		var defaults = {
		    url: document.URL,
		    method: ‘POST‘,
		    extraData: {},
		    maxFileSize: 0,
		    maxFiles: 0,
		    allowedTypes: ‘*‘,
		    extFilter: null,
		    dataType: null,
		    fileName: ‘file‘,
		    onUploadSuccess: function(fileName,url){}
		  };

		setting = $.extend({},defaults,setting);
		var fn = {
			init:function(){
				var _this = this;
				//拖拽文件上传
				var $targetBox = document.getElementById($(_this).attr(‘id‘));
				$targetBox.addEventListener("drop", function(e) {
				//取消默认浏览器拖拽效果
		       		e.preventDefault();
		       		var fileList = e.dataTransfer.files;
		       		fn.upload.call(_this,fileList[0]);
	       		 }, false);

				//选择文件上传
				$(_this).find(‘input‘).on(‘change‘,function(e){
					var file = e.target.files;
					var file = file.item(0);
					fn.upload.call(_this,file);
				});

			},upload:function(file){
				if(fn.checkType(file)) return;
				var _this = this;
				var fd = new FormData();
	       		fd.append(‘files‘, file);
	       		$.ajax({
	   		        url: $ctx+"/fileUpload/xxxxx.do",
	   		        type: ‘POST‘,
	   		        success: function(data){
	   		        if(data.success)
	   		        	    setting.onUploadSuccess.call(_this,file.name,data);
	   		        	}
	   		        },
	   		        error: function(){
	   		        	showReturnMsg(‘上传失败‘,‘error‘);
	   		        },
	   		        data: fd,
	   		        cache: false,
	   		        contentType: false,
	   		        processData: false
	       		});
			},
			//允许上传的文件类型
			checkType:function(file){
	       		 if (setting.allowedTypes != ‘*‘ && setting.allowedTypes.indexOf(file.type) == -1) {
	       		 	showReturnMsg(‘文件格式错误,只能上传‘+setting.allowedTypes+‘格式的文件‘,‘error‘);
	       		 	return true;
	       		 }
	       		 return false
			}
		};

		return this.each(function(i,n){
			fn.init.call($(n));
		});
	};

	  $(document).on(‘dragenter‘, function (e) { e.stopPropagation(); e.preventDefault(); });
	  $(document).on(‘dragover‘, function (e) { e.stopPropagation(); e.preventDefault(); });
	  $(document).on(‘drop‘, function (e) { e.stopPropagation(); e.preventDefault(); });
})(jQuery);

jsp:

<div id="target_box" class="fileupload_box">   <p class="fileupload_message" >将图片拖动到这里</p>   <p class="odao_chooseFileUpload odao_browser">选择文件   <input type="file" name="files" multiple="multiple">   </p></div>   

调用方法:

$(‘#target_box‘).odao_fileupload({
      onUploadSuccess:function(fileName,attachmentUrl){
      //保存上传文件信息并记录日志
	$.ajax({
	 	type: "post",
	 	url: ‘‘,
	 	data: {‘‘},
	 	dataType: "json",
	 	success: function(data){
	 	 if(data.success){
		    	alert(‘上传成功‘);
	 	  }else{
	 	       alert(‘上传失败‘);
      	          }
	 	 }
	 	});
       },
       allowedTypes:‘image/png‘
 });

spring 配置:

<!-- 文件上传相关 -->
<bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--one of the properties available;the maximum upload size in bytes 100M-->
        <property name="maxUploadSize" value="104857600"/>
</bean>

FileUpload.java:

@RequestMapping("/uploadProjectBgPicture.do")
public String uploadProjectBgPicture(@RequestParam MultipartFile[] files,HttpServletRequest request,HttpServletResponse response) throws IOException{
     具体操作内容
}
时间: 2024-10-29 19:07:51

SpringMvc+jQuery 文件拖拽上传、选择上传的相关文章

文件拖拽上传

1 <style> 2 div{ 3 width: 300px; 4 height: 300px; 5 border:1px dashed #000; 6 position:absolute; 7 top: 50%; 8 left: 50%; 9 margin:-150px 0 0 -150px; 10 text-align:center; 11 font:20px/300px '微软雅黑'; 12 display:none; 13 } 14 </style> 15 <scr

VC++ 文件拖拽功能实现

使用过QQ的人都知道,只要把文件拖拽到消息框中就可以传送文件了.那么这种功能是如何实现的呢?其实很简单,只需要响应一个WM_DROPFILES消息就可以了. 在基于对话框的程序中,默认是没有这个消息的,按下Ctrl+W,弹出类向导对话框,选择Class Info标签,在Message fileter下拉列表中选择Window,然后再点击Message Maps标签,就出现WM_DROPFILES消息了,添加该消息的响应函数: void CTestDlg::OnDropFiles(HDROP hD

jQuery可拖拽3D万花筒旋转特效

jQuery可拖拽3D万花筒旋转特效 这是一个使用了CSS3立体效果的强大特效,本特效使用jQuery跟CSS3 transform来实现在用户鼠标按下拖动时,环形图片墙可以跟随鼠标进行3D旋转动画. 效果体验:http://hovertree.com/texiao/jquery/92/ 进去后可以上下左右的拖动图片. 本示例中使用到了CSS3的transform-style 属性,该规定如何在 3D 空间中呈现被嵌套的元素. 默认值: flat继承性: no版本: CSS3JavaScript

wxpython实现文件拖拽

我想让wx.grid里面的单元格能够支持文件拖拽,实现起来挺简单的,共分3步: 1.创建一个wx.FileDropTarget子类的对象,并把要支持拖拽的控件传给它的构造函数,此处是grid 2.调用grid的SetDropTarget函数,并将第1步创建的wx.FileDropTarget子类对象传给它 3.实现第1步创建的wx.FileDropTarget的子类,并覆盖OnDropFiles函数 贴出代码如下: import wx import wx.grid import logging

Linux下安装VMware Tools(使虚拟机支持文件拖拽)

如图点击虚拟机找到安装VMware Tools选项,点击后会在虚拟机桌面显示一个光盘,双击进入如下页面: 选择压缩包将其复制放入Home中不带中文的文件夹: 打开终端,输入cd命令进入文件夹,将压缩包解压: tar -xzf VMwareTools-xx.x.xx-xxxxxxx.tar.gz //xx为自己的Tools版本号 解压后按照以下输入命令行进入安装过程: 遇到选项输入空格即默认选项即可 一直到显示下图则安装完成,此时重启即可实现虚拟机与本机间文件拖拽: 原文地址:https://ww

文件拖拽功能失效,原来是UAC把它过滤了

碰到这样一个问题,文件拖拽功能在没有以管理员身份运行的时候是正常的,但是一旦使用管理员身份运行,这个功能就失效了,搜索了好久总算找到原因了. 在window visa以上版本里引入了用户账户控制(UAC),在管理员权限上会过滤掉一些窗口消息,文件拖拽正好也也被过滤了,解决的方法就是使用ChangeWindowMessageFilterEx()解除过滤 //解除window7以上窗口对该消息的过滤 ChangeWindowMessageFilterEx(hwndDlg, WM_DROPFILES,

CEdit添加右键菜单, ClistCtrl接收文件拖拽

CEdit接收文件拖拽很容易,但ClistCtrl却很难: CListCtrl添加右键菜单很容易,而CEdit却很难. 这种功能不全面,阴差阳错的感觉让人很头疼. 下面介绍一下 CEdit添加右键菜单 和 CListCtrl接收文件拖拽的方法 1. CEdit 添加右键菜单 从CEdit派生出一个类CMyEdit,添加消息ON_WM_CONTEXTMENU(),响应消息函数OnContextMenu().如下: 类定义: //自定义CMyEdit //目的为了实现CEdit添加右键菜单 clas

jquery实现拖拽的效果

上篇讲的是原生js实现拖拽的效果,本篇是jquery实现拖拽的效果. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta charset="utf-8"/> <title> New Documen

Dropzone.js实现文件拖拽上传

dropzone.js是一个开源的JavaScript库,提供 AJAX 异步文件上传功能,支持拖拽文件.支持最大文件大小.支持设置文件类型.支持预览上传结果,不依赖jQuery库. 查看演示 下载源码 使用Dropzone 我们可以建立一个正式的上传form表单,并且给表单一个.dropzone的class. <form id="mydropzone" action="/upload.php" class="dropzone">&l