在项目中使用的是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和Ajax实现多文件上传并显示上传进度条的功能。这是一个在Web开发中常见的需求,特别是在处理大文件或批量上传时,用户界面的实时反馈至关重要,以提供更好的用户体验。 ...
在本文中,我们将探讨如何使用Spring MVC和Ajax技术实现文件上传,并且在上传过程中展示进度条。这个功能对于用户交互性非常关键,因为它提供了更好的用户体验,让用户知道文件上传的状态。 首先,让我们从前端部分...
综合布线施工计划完整版各种表格.doc
桂林电子科技大学硕士研究生入学考试复试试卷离散数学程序设计基础.doc
深信服虚拟化渠道初级认证考卷卷.docx
计算机photoshop等级考试试题.docx
电大程序设计形成性考核答案.doc
网络整改项目参数要求.doc
【目标检测】4种铁轨表面缺陷检测数据集4020张YOLO+VOC格式.docx
网络流量分析解决方案.doc
福建省施工企业三类人员网络继续教育测试题.doc
人工免疫算法专家讲座.pptx
电信互联网数据中心IDC总体技术要求.docx
网易游戏游戏开发工程师与游戏测试面试题.doc
高等教育管理_SpringBootVueMySQLRedisElementUIShiro_大学生体质健康测试全流程信息化管理平台_实现高校学生体质测试预约管理成绩录入分.zip
计算机等级考试一级MSOffice考试样题.doc
理论题电子商务师三级含答案.doc
计算机网络课程考试复习.doc
计算机图形学实验报告新编.doc
数据集介绍:多物种动物目标检测数据集 一、基础信息 数据集名称:多物种动物目标检测数据集 图片数量: - 训练集:4,510张 - 验证集:566张 - 测试集:565张 分类类别(67类): 涵盖陆地、海洋及空中生物,包括熊科(棕熊、北极熊)、猫科(猎豹、狮子)、偶蹄目(骆驼、牛)、鸟类(鹦鹉、鹰)、水生生物(鲨鱼、海龟)、昆虫(蝴蝶、瓢虫)等,完整覆盖常见家养动物与野生动物物种。 标注格式: YOLO格式,包含归一化坐标的边界框标注,适配主流目标检测框架。 二、适用场景 生态监测系统开发: 支持构建野生动物自动识别系统,应用于自然保护区、森林巡护等场景的物种分布监测。 农业智能化管理: 识别家禽、牲畜等农业相关动物,辅助养殖场自动化管理及健康监测。 生物学研究支持: 提供跨物种的视觉识别基准数据,助力动物行为学、种群生态学等研究。 教育科普应用: 适用于自然教育类应用的开发,提供动物识别与知识图谱关联功能。 三、数据集优势 跨域物种全覆盖: 包含67个动物类别,涵盖哺乳动物、鸟类、爬行类、水生生物及昆虫,满足多场景泛化需求。 标注质量保障: YOLO格式标注经严格校验,边界框定位精准,支持高精度目标检测模型训练。 场景多样性突出: 数据来源于航拍、地面拍摄等多视角采集,包含复杂背景下的动物识别样本。 任务扩展性强: 兼容目标检测、物种分类等任务,支持迁移学习至濒危动物监测等垂直领域。