在项目中使用的是springmvc,在spring mvc中的上传文件的功能做的很多好,项目中使用都很方便。最近做的项目要实现上传显示上传进度,百分比;但是发现springmvc貌似没有实现这样的功能,所以就只有自己来小小的扩展一下。
springmvc中内部上传使用的是fileupload,而其实fileupload是提供了上传监控的功能的,了解了这个之后实现起来就简单了。
1. 首先跟踪一下org.springframework.web.multipart.commons.CommonsMultipartResolver这个类默认的实现,最后发现在parseRequest这个方法中能够获取到FileUpload对象
2. 创建一个类MultipartListenerResolver,继承CommonsMultipartResolver,覆盖方法parseRequest
public class MultipartListenerResolver extends CommonsMultipartResolver { @Override protected MultipartParsingResult parseRequest(HttpServletRequest request) throws MultipartException { String encoding = determineEncoding(request); FileUpload fileUpload = prepareFileUpload(encoding); //设置监听器 fileUpload.setProgressListener(new FileUploadProgressListener(request.getSession())); try { List<FileItem> fileItems = ((ServletFileUpload) fileUpload).parseRequest(request); return parseFileItems(fileItems, encoding); } catch (FileUploadBase.SizeLimitExceededException ex) { throw new MaxUploadSizeExceededException(fileUpload.getSizeMax(), ex); } catch (FileUploadException ex) { throw new MultipartException("Could not parse multipart servlet request", ex); } } }
3. 创建监听器类FileUploadProgressListener,构造方法接收一个session对象,把当前上传的进度发入到session中
public class FileUploadProgressListener implements ProgressListener {
private HttpSession session;
public FileUploadProgressListener(HttpSession session) {
this.session = session;
}
//pBytesRead 已经上传的大小
//pContentLength 文件总大小
@Override
public void update(long pBytesRead, long pContentLength, int pItems) {
System.out.println((double)pBytesRead/pContentLength);
session.setAttribute("progress", (double)pBytesRead/pContentLength);
}
}
4. 最后就可以直接对外提供一个接口来从session中读取上传的进度,前台通过ajax来访问
相关推荐
springmvc带进度条上传源码
基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于...
SpringMVC 文件上传 进度条 java
ajax上传文件,ajax实现进度条,及springMvc上传文件实现进度条
导入eclipse中,运行项目即可,上传文件限制不能超过2G,如果要修改则自己在springmvc.xml文件中修改配置
JavaEE企业级开发-----SpringMVC实现 文件的上传下载实验报告
SpringMVC+Ajax实现多个文件上传带进度条
该demo基于springmvc,监听spring的processerListener接口,实现对上传数据的更新,同时采用进度条显示当前上传情况。
SpringMVC文件上传与下载的实现,包括UploadController和DownloadController
本篇文章主要介绍了springMVC+ajax实现文件上传且带进度条实例,具有一定的参考价值,有兴趣的可以了解一下。
springmvc中实现文件上传所要用到的jar包
这里是由Intelli IDEA 搭建的SpringMVC 系统, 实现了简单的文件上传下载功能
springmvc上传文件controller,vue
SpringMVC文件上传Demo代码
使用SpringMVC实现文件列表展示,文件上传,文件下载和文件删除
springmvc实现文件上传和下载,里面有2个页面,一个是上传页面,一个是下载列表页面,用的是springmvc控制器,比较简单实现,欢迎下载!
极客学院java中级课程,SpringMVC系列教材——SpringMVC 实现文件上传下载、国际化等
SpringMVC实现用户角色管理(springmvc角色权限管理) SpringMVC用户管理实现 通过SpringMVC与JSP实现用户角色管理 SpringMVC实现用户角色管理(springmvc角色权限管理
本篇文章主要介绍了springMVC实现前台带进度条文件上传的示例代码,具有一定的参考价值,有兴趣的可以了解一下。
本资源是用于实现springMVC多文件上传时需要的jar包