webUploader图片上传

 <td>资料图片<span style="color: red;">(图片存储的位置以上传的为基础,后台查看放大图片为了显示可能会进行位置改变)</span></td>
				    <td colspan="7">
				    	<div style="width:900px;">
				    		<!-- 放图片的容器 -->
				    		<div style="width:900px;">
				    			<ul id="dragList" class="sortable grid">
				    				<c:if test="${not empty pictureList}">
					    				<c:forEach var="item" items="${pictureList}" varStatus="status">
							  				<li>
												<div>
													<div class="dragDivImage">
														<img width="100px" height="75px" src="${ctxUserFiles}/${item.minImage}" title="${item.fileName}">
													</div>
													<div class="dragDivFd">
														<a rel="group" href="${ctxUserFiles}/${item.Image}" title="${item.fileName}">
															<img src="${ctxStatic}/dragsort/images/fd.jpg" width="45px" height="20px">
														</a>
													</div>
													<div class="dragDivSc">
														<a href="javascript:" onclick="delImg(this)">
															<img src="${ctxStatic}/dragsort/images/sc.jpg" width="45px" height="20px">
														</a>
													</div>
												</div>
													<input type="hidden" name="imagePath" value="${item.Image}">
													<input type="hidden" name="minImagePath" value="${item.minImage}">
													<input type="hidden" name="fileName" value="${item.fileName}">
											</li>
							  			</c:forEach>
				    				</c:if>
				    			</ul>
				    		</div>
				    		<!-- 放上传按钮的容器 -->
				    		<div style="float: left;width: 900px;" id="filePicker">选择图片</div>
				    	</div>
				    </td>
<link type="text/css" rel="stylesheet" href="${ctxStatic}/webuploader/css/webuploader.css"/>
		
		<!-- 图片集 -->
		<link type="text/css" rel="stylesheet" href="${ctxStatic}/fancybox/css/fancybox.css"/>
<style type="text/css">
			.sortable {
				margin: auto;
				padding: 0;
				width: 800px;
				-webkit-touch-callout: none;
				-webkit-user-select: none;
				-khtml-user-select: none;
				-moz-user-select: none;
				-ms-user-select: none;
				user-select: none;
			}
			.sortable.grid {
				overflow: hidden;
			}
			.sortable li {
				list-style: none;
				border: 1px solid #CCC;
				background: #F6F6F6;
				font-family: "Tahoma";
				color: #1C94C4;
				margin: 5px;
				padding: 5px;
/* 				height: 22px; */
			}
			.handles span {
			cursor: move;
			}
			.sortable li.disabled {
				opacity: 0.5;
			}
			.sortable.grid li {
/* 				line-height: 80px; */
				float: left;
				width: 108px;
				height: 108px;
				text-align: center;
			}
			.sortable li.highlight {
				background: #FEE25F;
			}
			.sortable li.sortable-placeholder {
				border: 1px dashed #CCC;
				background: none;
			}
			.sortable li>div { width:101px; height:96px; border:solid 1px black; background-color:rgb(45,175,235); text-align:center;  }
			.dragDivImage {width: 100px;height: 75px;overflow: hidden;z-index:-1;}
			.dragDivFd {float: left;width: 45px;height: 20px;overflow: hidden;z-index:0;}
			.dragDivSc {float: right;width: 45px;height: 20px;overflow: hidden;z-index:0;}
		</style>
 <td>资料图片<span style="color: red;">(图片存储的位置以上传的为基础,后台查看放大图片为了显示可能会进行位置改变)</span></td>
				    <td colspan="7">
				    	<div style="width:900px;">
				    		<!-- 放图片的容器 -->
				    		<div style="width:900px;">
				    			<ul id="dragList" class="sortable grid">
				    				<c:if test="${not empty pictureList}">
					    				<c:forEach var="item" items="${pictureList}" varStatus="status">
							  				<li>
												<div>
													<div class="dragDivImage">
														<img width="100px" height="75px" src="${ctxUserFiles}/${item.minImage}" title="${item.fileName}">
													</div>
													<div class="dragDivFd">
														<a rel="group" href="${ctxUserFiles}/${item.Image}" title="${item.fileName}">
															<img src="${ctxStatic}/dragsort/images/fd.jpg" width="45px" height="20px">
														</a>
													</div>
													<div class="dragDivSc">
														<a href="javascript:" onclick="delImg(this)">
															<img src="${ctxStatic}/dragsort/images/sc.jpg" width="45px" height="20px">
														</a>
													</div>
												</div>
													<input type="hidden" name="imagePath" value="${item.Image}">
													<input type="hidden" name="minImagePath" value="${item.minImage}">
													<input type="hidden" name="fileName" value="${item.fileName}">
											</li>
							  			</c:forEach>
				    				</c:if>
				    			</ul>
				    		</div>
				    		<!-- 放上传按钮的容器 -->
				    		<div style="float: left;width: 900px;" id="filePicker">选择图片</div>
				    	</div>
				    </td>
// 图片集
		$("a[rel=group]").fancybox({
			'titlePosition' : 'over',
			'cyclic'        : true,
			'titleFormat'	: function(title, currentArray, currentIndex, currentOpts) {
						return '<span id="fancybox-title-over">' + (currentIndex + 1) + ' / ' + currentArray.length + (title.length ? ' &nbsp; ' + title : '') + '</span>';
					}
		});
			
	});
		
		function delImg(obj){
			var result = confirm('确定删除此图片吗?');  
			if(result){  
				$(obj).parent().parent().parent().remove();
		        alert('删除成功!');  
		    }
		    return true;
		}


<script type="text/javascript">
		$(document).ready(function(){
			//var $ = jQuery;
		   var $list = $('#dragList'),
		     // 优化retina, 在retina下这个值是2
		     ratio = window.devicePixelRatio || 1,
		
		     // Web Uploader实例
		     uploader;
			
			
// 			$("#dragList").dragsort({
// 			    dragSelector: "li",
// 			    dragEnd: function() { },
// 			    dragBetween: false,
// 			    placeHolderTemplate: "<li></li>"
// 			});

			// 图片拖拽JS
			$('.sortable').sortable();
			
			 // 初始化Web Uploader
			 uploader = WebUploader.create({
			
			     // 自动上传。
			     auto: true,
			
			     // swf文件路径
			     swf: '${ctxStatic}/webuploader/Uploader.swf',
			
			     // 文件接收服务端。
			     server: '${ctx}/uploadify/upload',
			
			     // 选择文件的按钮。可选。
			     // 内部根据当前运行是创建,可能是input元素,也可能是flash.
			     pick: '#filePicker',
			     
			     // 是否容许重复上传
			     duplicate:true,
			     
			     // 允许最大上传进程数
			     threads:1,
			     
			     // 上传图片不进行压缩,原样上传
			     compress:false,
				
				// 上传单个图片的大小限制500KB
				fileSingleSizeLimit:500*1024,
			
			     // 只允许选择文件,可选。
			     accept: {
			         title: 'Images',
			         extensions: 'gif,jpg,jpeg,bmp,png',
			         mimeTypes: 'image/*'
			     }
			 });
			 
			 // 进行错误判断提示
			 uploader.on('error',function(type){
			 	 if (type=="Q_TYPE_DENIED"){
			 	 	alert("上传的图片文件格式为:gif,jpg,jpeg,bmp,png");
			 	 }else if(type=="F_EXCEED_SIZE"){
			 	 	alert("图片的大小请不要超过500KB");
			 	 }
			 });
			
			 // 当有文件添加进来的时候
			 uploader.on( 'fileQueued', function( file ) {
			 
			     // 创建li元素块
			     var li = '';
				    li+='<li id="' + file.id + '">';
	   				li+='<div>';
	   				li+='<div class="dragDivImage"><img width="100px" height="75px"></div>';
					li+='<div class="dragDivFd"><a rel="group"><img src="${ctxStatic}/dragsort/images/fd.jpg" width="45px" height="20px"></a></div>';
					li+='<div class="dragDivSc"><a href="javascript:" onclick="delImg(this)"><img src="${ctxStatic}/dragsort/images/sc.jpg" width="45px" height="20px"></a></div>';
					li+='</div>';
					li+='</li>';
					
				  var $li = $(li);
// 			      $img = $($li.find('img').get(0));
			         
			     $list.append($li);
			
			     // 创建缩略图
// 			     uploader.makeThumb( file, function( error, src ) {
// 			         if ( error ) {
// 			             $img.replaceWith('<span>不能预览</span>');
// 			             alert("上传失败!");
// 			             $li.remove();
// 			             return;
// 			         }
			         
// 			         if(src.length==0){
// 			          alert("上传失败!");
// 			             $li.remove();
// 			             return;
// 			         }
			         
// 			       $img.attr( 'src', src ).attr('title', file.name);
// 			     }, thumbnailWidth, thumbnailHeight );
			 });
			
			 // 文件上传过程中创建进度条实时显示。
			 uploader.on( 'uploadProgress', function( file, percentage ) {
			     var $li = $( '#'+file.id ),
			         $percent = $li.find('.progress span');
			
			     // 避免重复创建
			     if ( !$percent.length ) {
			         $percent = $('<p class="progress"><span></span></p>')
			                 .appendTo( $li )
			                 .find('span');
			     }
			
			     $percent.css( 'width', percentage * 100 + '%' );
			 });
			
			 // 文件上传成功,给item添加成功class, 用样式标记上传成功。
			 uploader.on( 'uploadSuccess', function( file,json) {
			 	//var result = $.parseJSON(data);
				//alert(json.path);
				//alert(file.id);

			 	//上传成功,追加的元素体
			 	$li = $('#'+file.id);
			 	
			 	// 缩略图容器
			 	$img = $($li.find('img').get(0));
			 	
			 	// 图片集容器
			 	$a = $($li.find('a').get(0));
			 	
			 	// 进行缩略图数据填充
			 	$img.attr('src','${ctxUserFiles}/'+json.minPath).attr('title', file.name);
			 	
			 	$a.attr('href','${ctxUserFiles}/'+json.path).attr('title', file.name);
			 	
				var html = '';
				// 上传原始文件隐藏域
			    html += '<input type="hidden" name="imagePath" value="'+json.path+'"/>';
			    // 上传小图片隐藏域
			    html += '<input type="hidden" name="minImagePath" value="'+json.minPath+'"/>';
			    // 上传文件名
			     html += '<input type="hidden" name="fileName" value="'+file.name+'"/>';
			    
			    $li.append(html);
			    
			    // 图片集
				$("a[rel=group]").fancybox({
					'titlePosition' : 'over',
					'cyclic'        : true,
					'titleFormat'	: function(title, currentArray, currentIndex, currentOpts) {
								return '<span id="fancybox-title-over">' + (currentIndex + 1) + ' / ' + currentArray.length + (title.length ? ' &nbsp; ' + title : '') + '</span>';
							}
				});
				
				// 图片拖拽JS
				$('.sortable').sortable();
			    
			 });
			
			 // 文件上传失败,现实上传出错。
			 uploader.on( 'uploadError', function( file ) {
			     var $li = $( '#'+file.id );
			     $li.remove();
			     alert(file.name+"上传失败!");
			 });
			
			 // 完成上传完了,成功或者失败,先删除进度条。
			 uploader.on( 'uploadComplete', function( file ) {
			     $( '#'+file.id ).find('.progress').remove();
			 });
		});
	</script>





@ResponseBody
	@RequestMapping(value="/upload")
	public Map<String,String> upload(HttpServletRequest request, HttpServletResponse response) throws Exception{
		String newFileName="";
		String extName = "";
		String responseStr="";
		HashMap<String, String> resultMap = new HashMap<String, String>();
		MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
		Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();    
		//String savePath = this.getServletConfig().getServletContext().getRealPath("");
		        //savePath = savePath + "/uploads/";
		// 文件保存路径  ctxPath本地路径
		String ctxPath=request.getSession().getServletContext().getRealPath("/")+"userfiles";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");  
		String ymd = sdf.format(new Date());  
		ctxPath += File.separator + ymd + File.separator;  
		System.out.println("ctxpath="+ctxPath);
		// 创建文件夹  
		File file = new File(ctxPath);    
		if (!file.exists()) {    
		file.mkdirs();    
		}
		String fileName = null;    
		for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {    
		// 上传文件   
		MultipartFile mf = entity.getValue();  
		fileName = mf.getOriginalFilename();//获取原文件名  
		System.out.println("filename="+fileName);
		// 扩展名格式:
		if (fileName.lastIndexOf(".") >= 0) {
			extName = fileName.substring(fileName.lastIndexOf("."));
		}
		newFileName = UUID.randomUUID().toString();
		File uploadFile = new File(ctxPath + newFileName + extName);
		try {  
		  FileCopyUtils.copy(mf.getBytes(), uploadFile);  
		  
		   responseStr="上传成功";
		   // 图片上传成功,生成缩略图
		   Thumbnails.of(uploadFile).size(226, 226).toFile(new File(ctxPath + newFileName+"_Min"+ extName));
		   
		   resultMap.put("minPath", ymd +"/"+newFileName+"_Min"+extName);
		   
		   } catch (IOException e) {  
		   	responseStr="上传失败";  
		       e.printStackTrace();  
		       }
		}   
		 resultMap.put("path", ymd +"/"+newFileName+extName);
		return resultMap;
	}
	

<script type="text/javascript" src="${ctxStatic}/webuploader/js/webuploader.js"></script>
        
        <!-- 图片集 -->
        <script type="text/javascript" src="${ctxStatic}/fancybox/js/jquery.fancybox-1.3.1.pack.js"></script>
        
        <!-- 图片拖拽插件 -->
<!--         <script type="text/javascript" src="${ctxStatic}/dragsort/js/jquery.dragsort-0.5.2.min.js"></script> -->
        <script type="text/javascript" src="${ctxStatic}/sortable/jquery.sortable.min.js"></script>

转载于:https://my.oschina.net/u/2481007/blog/886991

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值