• 将多张图片打包成zip包,一起上传


    1、前端页面

    <div class="mod-body" id="showRW" style="text-align: center;font-size: 14px;letter-spacing: 1px;line-height: 24px;padding-bottom: 10px;height:400px;background:#FFFFFF !important;padding-top:140px;">
    							<table style=" 100%;background:#FFFFFF !important;">
    								<tr>
    									<td style="text-align: center;">
    										<span>选择类型:</span>
    										<select name="photoType" id="photoType" style="200px;">
    											
    										</select>
    									</td>
    								</tr>
    								<tr>
    									<td style="text-align: center;">
    										<span>选择文件:</span>
    										<input type="file" style="200px;padding: 0 0px !important;" name="importImg" id="importImg">
    									</td>
    								</tr>
    								<tr style="text-align: center;">
    									<td >
    				  						<input id="submitBtn" type="button" class="button" value="提交" style="130px;background: #263552;color: #FFF;border: 0px;border-radius: 2px;height: 28px;"/>
    			  						</td>
    			  					</tr>
    			  					<tr style="text-align: center;">
    									<td >
    										<div style="display: inline-block; 50%;line-height: 30px;text-align: left;padding-left: 550px;">
    											<span style="color:red;">注意:</span><br>
    											<span>1、仅支持图片打包成ZIP包,不能直接将文件夹打压缩包</span><br/>
    											<span>2、上传的每张图片大小须在100K以内</span>
    										</div>
    										
    			  						</td>
    			  					</tr>
    							</table>
                       		</div>
    

      2、js代码

    //提交
    		$("#submitBtn").click(function(){
    			
    			var photoTypeSelect = $("#photoType").val();
    			if(photoTypeSelect == -1){
    				alert("请选择照片墙类型");
    				return false;
    			}
    			
    			var importFile = $("#importImg")[0].files[0];
    			if($("#importImg").val() == ''){
    				alert("请选择文件!");
    				return false;
    			}else{
    				var fileNameIndex = importFile.name.lastIndexOf("."); 
    				var fileName = importFile.name.substring(fileNameIndex,importFile.name.length); 
    				if((fileName.toLowerCase() != ".zip" )){
    					 alert("文件必须为.zip类型"); 
        				 window.location.href='#';
               			 return false;
    				}
    			}
    			$("#mask").show();
    			$("#shDiv1").show();
    			var formData = new FormData();
    			formData.append("importFile", importFile);
    			formData.append("photoTypeSelect", photoTypeSelect);
                formData.append("conId",conId);
    			$.ajax({
    				url:"<%=basePath%>/Conferences/photoWallAction.do?method=importPhotoWall", 
    				type:"post",
    				dataType:"json",
    				data: formData, 
    				dataType:"json",
    	            // 告诉jQuery不要去处理发送的数据
    	            processData: false,
    	            // 告诉jQuery不要去设置Content-Type请求头
    	            contentType: false,
    	            async:false,
    				success:function(json){
    					$("#mask").hide(); 
    					$("#shDiv1").hide(); 
    					if(json.state == 1){
    						if(confirm('导入成功!')){
    							window.location.reload();
    						}
    					}else{
    						if(confirm('导入失败!')){
    							window.location.reload();
    						}
    					}
    				},
    				error:function(){
    					if(confirm('导入失败!')){
    							window.location.reload();
    						}
    				}
    			})
    			
    		})
    

      3、后台数据处理

    @RequestMapping(params = "method=importPhotoWall",method = RequestMethod.POST)
    	public void importPhotoWall(Integer conId,Integer photoTypeSelect,HttpServletRequest request,HttpServletResponse response,ModelMap model){
    		try {
    			JSONObject result = new JSONObject();
    			MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;
    			MultipartFile mFile = mRequest.getFile("importFile");
    			String theUrl = request.getScheme()+"://"+request.getServerName()+request.getContextPath()+"/";
    			String fileUrl =  request.getSession().getServletContext().getRealPath("files");
    			try {
    				File file11 = new File(fileUrl+"/photoWallZip");
    				if(!file11.exists()){
    					file11.mkdirs();
    				}
    				File file = new File(fileUrl+"/photoWallZip","zip"+conId+".zip");
    				mFile.transferTo(file);
    				
    				//解压到目的文件夹
    				File file1 = new File(fileUrl+"/photoWall/"+conId+"/");
    				if(!file1.exists()){
    					file1.mkdirs();
    				}
    				
    				if(file != null){// 压缩文件夹存在
    					ZipFile zf = new ZipFile(fileUrl+"/photoWallZip/zip"+conId+".zip",Charset.forName("GBK"));
    					Enumeration<?> entries = zf.entries(); 
    					while(entries.hasMoreElements()){ 
    						byte[] bytes = new byte[2048]; 
    						int count = -1; 
    						ZipEntry entry = (ZipEntry)entries.nextElement(); 
    						String fileName = entry.getName();
    						String saveUrl = "";
    						if(entry.isDirectory()){
    							
    						}else{
    							fileName = new Date().getTime()+fileName.substring(fileName.lastIndexOf("."), fileName.length());
    							saveUrl = fileUrl+"/photoWall/"+conId+"/"+fileName;
    							File file2 = new File(saveUrl);
    							file2.createNewFile(); //创建文件
    							InputStream is = zf.getInputStream(entry);
    							FileOutputStream fos =  new FileOutputStream(file2);
    							BufferedOutputStream bos = new BufferedOutputStream(fos, 2048); 
    							 while((count = is.read(bytes)) > -1) 
    						        { 
    						          bos.write(bytes, 0, count); 
    						        } 
    							bos.flush(); 
    					        bos.close(); 
    					        fos.close(); 
    					        is.close(); 
    						}
    						 List<PhotoWall> phoList = photoWallService.getPhotpWallByConIdAndTypeasc(conId, photoTypeSelect);
    						 PhotoWall photoWall = new PhotoWall();
    			        	 photoWall.setConferencesId(conId);
    			        	 photoWall.setCreateTime(new Date());
    			        	 if(phoList != null && phoList.size() > 0){
    			        		 if(phoList.get(0) != null && phoList.get(0).getLastDoTime() != null){
    			        			 photoWall.setLastDoTime(new Date(phoList.get(0).getLastDoTime().getTime()+60000));
    			        		 }else{
    			        			 photoWall.setLastDoTime(new Date());
    			        		 }
    			        	 }else{
    			        		 photoWall.setLastDoTime(new Date());
    			        	 }
    			        	 photoWall.setCreateUserId(-1);
    			        	 photoWall.setCreateUserType(-1);
    			        	 photoWall.setImageUrl(theUrl+"files/photoWall/"+conId+"/"+fileName);
    			        	 photoWall.setLaudCount(0);
    			        	 photoWall.setState(2);
    			        	 photoWall.setTypeId(photoTypeSelect);
    			        	 photoWallService.saveOrUpdateObject(photoWall);
    				    }
    					zf.close();
    					if(!file.exists()){
    						System.out.println("删除文件失败,文件不存在");
    					}else{
    						 if (file.isFile())
    						   if(!file.delete()){//判断是否删除完毕
    						       System.gc();//系统进行资源强制回收
    						       file.delete();
    						   }
    						   System.out.println("删除成功");
    						 }
    					}
    			} catch (Exception e) {
    				result.accumulate("state", 0);
    				e.printStackTrace();
    			}
    			result.accumulate("state", 1);
    			writeToJson(response, result.toString());
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    	
    

      

  • 相关阅读:
    HDU1163 Eddy&#39;s digital Roots【九剩余定理】
    【ThinkingInC++】8、说明,浅谈数据类型的大小
    教你如何使用U盘装系统
    图像不显示该问题的解决方案
    HTTP相关概念
    AndroidUI的组成部分GridView
    uploadify 3.2 后台动态传参数
    Oracle11g创建表空间语句
    Uncaught RangeError: Maximum call stack size exceeded解决思路
    panel,dialog,window组件越界问题汇总
  • 原文地址:https://www.cnblogs.com/jichuang/p/10033016.html
Copyright © 2020-2023  润新知