sprignmvc 中使用zyUpload 上传图片(批量)
来源:互联网 发布:科脉软件 编辑:程序博客网 时间:2024/05/16 12:57
在我们开发的java WEB项目中,文件上传这种需求实在是十分常见,而网上大多也都能搜到提供此类功能的js 脚本或js demo示例。 各种各样的js插件,各类的上传特效(本地预览、带进度上传等)实在让人眼花缭乱。。。 其中我比较喜欢的一种为zyupload.js ,无论是功能上还是代码简洁性上都很不错。
废话不多说,本文介绍当然是zyupload.js图片批量上传。
(至于java后端当然是我一直最喜欢的组合spring+springmvc+mybatics)
前端jsp 页面。
需要引入zyupload-1.0.0.min.css 、jquery-1.7.2.js、zyupload-1.0.0.min.js。 其中jquery-1.7.2.js是zyupload中自带的jquery js
$("#zyupload").zyUpload({}) 方法中的url 设置为相对应的上传文件后台controller (struts2中为action),
onSelect onDelete onSuccess onFailure onComplete 分别为controller 处理后的几个前端回调函数 (图片添加、删除、上传成功、上传失败、全部上传成功)
在实际上传过程中,多张图片是一张一张得上传上去的,所以才会有最后的一个onComplete回调 。。
<% page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>zyupload demo</title><link rel="stylesheet" href="<%=path %>/js/zyupload/skins/zyupload-1.0.0.min.css " type="text/css"></head><body><h1 style="text-align:center;">zyupload demo</h1><div style="position: absolute;top: 100px; left: 20px;"></div> <div id="zyupload" class="zyupload"></div> </body> <script type="text/javascript" src="<%=path %>/js/jquery-1.7.2.js"></script> <script type="text/javascript" src="<%=path %>/js/zyupload/zyupload-1.0.0.min.js"></script> <script type="text/javascript">$(function(){contentPath='<%=path%>';// 初始化插件$("#zyupload").zyUpload({width : "650px", // 宽度height : "400px", // 宽度itemWidth : "140px", // 文件项的宽度itemHeight : "115px", // 文件项的高度url : contentPath+"/book/ajaxFileUpload.html", // 上传文件的路径fileType : ["jpg","png","txt","js","exe"],// 上传文件的类型fileSize : 51200000, // 上传文件的大小multiple : true, // 是否可以多个文件上传dragDrop : true, // 是否可以拖动上传文件tailor : true, // 是否可以裁剪图片del : true, // 是否可以删除文件finishDel : true, // 是否在上传文件完成后删除预览/* 外部获得的回调接口 */onSelect: function(selectFiles, allFiles){ // 选择文件的回调方法 selectFile:当前选中的文件 allFiles:还没上传的全部文件//console.info("当前选择了以下文件:");//console.info(selectFiles);//alert("当前选择了以下文件:");//alert(selectFiles);},onDelete: function(file, files){ // 删除一个文件的回调方法 file:当前删除的文件 files:删除之后的文件//console.info("当前删除了此文件:");//console.info(file.name);alert("当前删除了此文件:"+file.name);},onSuccess: function(file, response){ // 每文件上传成功的回调方法//console.info("此文件上传成功:"); alert("此文件上传成功:"+file.name); var data = JSON.parse(response); alert(data.rc+","+data.msg+","+data.value);//console.info(file.name);//console.info("此文件上传到服务器地址:");//console.info(response);//$("#uploadInf").append("<p>上传成功,文件地址是:" + response + "</p>");},onFailure: function(file, response){ // 文件上传失败的回调方法//console.info("此文件上传失败:");//console.info(file.name); alert("此文件上传失败:"+file.name);},onComplete: function(response){ // 上传完成的回调方法//console.info("文件上传完成");//console.info(response); alert("所有文件上传完成!!!"); var data = JSON.parse(response); alert(data.rc+","+data.msg+","+data.value);}});});</script> </html>
后端controller 代码
上传图片 我这里用的是springmvc 自带的文件上传组件,需要在springmvc 的配置文件配置一个文件解析器。
package com.jelly.easyuidemo.controller;import java.io.File;import java.util.Map;import java.util.UUID;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import com.jelly.easyuidemo.util.AjaxUtil; @Controller@RequestMapping("/book")public class BookController {//上传图片 img@RequestMapping("/fileUpload") public String fileUpload(@RequestParam(value = "file", required = false) MultipartFile file,HttpServletRequest request,HttpServletResponse response){response.setCharacterEncoding("utf-8"); //String path = request.getServletContext().getRealPath("/images/book/"); String path="f:/easyuidemoimage/"; String fileName = file.getOriginalFilename(); //prefix suffix String suffix=fileName.substring(fileName.lastIndexOf(".")); String newFileName=UUID.randomUUID().toString()+suffix; File targetFile = new File(path, newFileName); if(!targetFile.exists()){ targetFile.mkdirs(); } try { file.transferTo(targetFile); System.out.println("上传成功:"+path+newFileName); response.getWriter().write("文件上传成功:"+path+newFileName); } catch (Exception e) { e.printStackTrace(); } return null; }@RequestMapping("/toFileUpload")public String toFileUpload(){return "/book/fileUpload.jsp";} @RequestMapping("/ajaxFileUpload") public @ResponseBody Map<String,Object> ajaxFileUpload(HttpServletRequest request,HttpServletResponse response, @RequestParam(value = "file") MultipartFile file){ try { String path="f:/easyuidemoimage/"; String fileName = file.getOriginalFilename(); //prefix suffix String suffix=fileName.substring(fileName.lastIndexOf(".")); String newFileName=UUID.randomUUID().toString()+suffix; File targetFile = new File(path, newFileName); if(!targetFile.exists()){ targetFile.mkdirs(); } file.transferTo(targetFile); System.out.println("上传成功:"+path+newFileName); return AjaxUtil.messageMap(1, "上传成功", newFileName); } catch (Exception e) {e.printStackTrace();} return AjaxUtil.messageMap(-1, "上传失败"); }}
<!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 默认编码 --> <property name="defaultEncoding" value="utf-8" /> <!-- 文件大小最大值 --> <property name="maxUploadSize" value="10000000" /> <!-- 内存中的最大值 --> <property name="maxInMemorySize" value="40960" /> </bean>
开始上传了啦。。。
上传过程中有进度条显示哦。。。
再看下上传后的文件在哪。
ok 功能演示完成。
由于设置了上传文件完成后删除文件预览,所以在最后的文件上传框中的预览文件会被清空。当然除了图片此例可以用来上传一些小文件。
- sprignmvc 中使用zyUpload 上传图片(批量)
- SpringMVC+zyUpload图片的批量上传
- zyUpload结合SpringMVC实现批量图片的上传
- ThinkPHP中图片上传(批量上传)
- zyUpload多图上传插件的使用(基于php jquery)
- PHP zyUpload.js HTML5 无法上传中文名称图片
- 使用zyupload插件小结
- .NET使用swfupload实现图片批量上传
- .NET使用swfupload实现图片批量上传
- 使用swfUpload进行批量上传图片
- android批量文件上传(android批量图片上传)
- android批量文件上传(android批量图片上传)
- android批量文件上传(android批量图片上传)
- android批量文件上传(android批量图片上传)
- 上传图片、批量上传图片
- 使用Spark批量上传图片到HBase中并同时使用OpenCV提取SIFT特征值
- 在easyui的框架中,使用ajax实现批量上传图片到服务器
- SSM中使用Kindeditor插件实现图片的批量上传与回显
- java动态代理(JDK和cglib)
- POJ3468 A Simple Problem with Integers
- 学生化残差
- React Native 六:使用源码构建React Native
- 拿来主义太严重
- sprignmvc 中使用zyUpload 上传图片(批量)
- 数据结构之排序:堆排序
- C++基础实例(2)
- 关于sort()的疑问?
- scrollView 实现图片轮播
- cocoa pods的安装
- 利用volley去请求扇贝API获取个人信息
- hdu 1087 Super Jumping! Jumping! Jumping!
- 使用javascript和ajax中的不细心!!!