CN110519399A - 一种基于SpringMVC实现超大文件上传方法 - Google Patents
一种基于SpringMVC实现超大文件上传方法 Download PDFInfo
- Publication number
- CN110519399A CN110519399A CN201910938670.0A CN201910938670A CN110519399A CN 110519399 A CN110519399 A CN 110519399A CN 201910938670 A CN201910938670 A CN 201910938670A CN 110519399 A CN110519399 A CN 110519399A
- Authority
- CN
- China
- Prior art keywords
- plupload
- file
- chunk
- upload
- springmvc
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 18
- 230000005540 biological transmission Effects 0.000 abstract description 6
- 230000006870 function Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
- H04L67/108—Resource delivery mechanisms characterised by resources being split in blocks or fragments
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种基于SpringMVC实现超大文件上传方法,属于文件上传技术领域,本发明基于第三方plupload插件,实现大文件分割成更小的块(Chunk),基于SpringMVC实现后台接收Chunk流,并根据顺序将上传的Chunk合并,形成原始文件。通过分块上传,可实现:1、分块上传,由大化小,保证浏览器性能;2、可实现断点续传,保证文件上传,保障上传效率。
Description
技术领域
本发明涉及文件上传技术,尤其涉及一种基于SpringMVC实现超大文件上传方法。
背景技术
随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求。但是在很多情况下,无法直接上传超大文件和断点续传,往往在网上找一些简单的程序来实现基本的上传功能,然而在实际使用中会发现,这些基于脚本语言实现的上传功能模块性能很弱,一是不支持2GB以上的内容上传;二是无法支持断点续传;三是效率极低,单台服务器最多支持几十个并发上传连接。
超大文件通过浏览器上传时,因为浏览器处理能力及内存不同,会造成浏览器卡死无法响应的现象。
发明内容
为了解决以上技术问题,本发明提出了一种基于SpringMVC实现超大文件上传方法,基于SpringMVC+plupload实现超大文件通过浏览器上传、断点续传,plupload可对大文件进行Chunk分割,且支持显示上传进度、图像自动缩略和上传分块,可同时上传多个文件。
本发明的技术方案是:
一种基于SpringMVC实现超大文件上传方法,基于SpringMVC实现后台接收Chunk流,并根据顺序将上传的Chunk合并,形成原始文件。
进一步的,基于第三方plupload插件,实现大文件分割成一个以上的的块即Chunk。超大文件按顺序分块上传,每个块大小一致,且按文件顺序传输。
具体如下:
1、初始化JS,下载plupload插件,并在项目中需要引入jQuery.plupload.queue.css,jquery-2.0.0.min.js,plupload.full.min.js,jquery.plupload.queue.js,zh_CN.js文件
2、前端界面准备,准备上传功能按钮、界面,并实例化一个plupload对象时,也就是new plupload.Uploader(),需要传入一个对象作为配置参数,并根据需要配置plupload参数。对象属性包括上传、暂停绑定时间、Chunk大小、支持上传文件的格式等。
3、上传功能编写,后端获取plupload对象,对象中包含Chunk、Chunk数量和文件流,通过文件流的方式保存到需要的服务器路径。
本发明的有益效果是
可实现超大文件按顺序分块上传,因每个块大小一致,且按文件顺序传输,可实现断点续传,保证文件上传效率和完整。
附图说明
图1是本发明的工作流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的一种基于SpringMVC实现超大文件上传技术,主要包括如下步骤:1、下载Plupload插件并引入相应文件
下载地址:http://www.plupload.com/download,里面有要用到的css以及js。在项目中需要引入:jQuery.plupload.queue.css,jquery-2.0.0.min.js,plupload.full.min.js,jquery.plupload.queue.js,zh_CN.js这些文件
2、前端准备
首先在html中写入如下代码
注意div的id必须是uploader,这在插件源码里是有规定的;设置id为toStop与toStart的按钮,目的是为了实现暂停上传与暂停过后的继续上传。
3、页面加载后通过js初始化组件
4、后端上传逻辑编写
1)在Controller的最后一行PluploadService.upload(plupload,dir);中将客户端提交至服务器生成的plupload对象与规定保存的文件夹目录,以参数的形式传入PluploadService的upload方法中。
2)在upload(Plupload plupload,File pluploadDir)方法中,为文件生成一个唯一的文件名以便存储在服务器中。
3)chunks是用户一次性选中要上传的文件中当前文件被分隔后的总块数;nowChunk是这次上传中块的编号,从0开始。Plupload依次地将块从客户端提交至服务器,因此在文件上传中,会有很多次Http请求,而同一个文件的chunks是不变的,nowChunk会一次次增加。
4)将HttpServletRequest强制转换为MultipartHttpServletRequest时可能会出错,但这个错误可以避免,只需在SpringIOC容器中注入一个名为multipartResolver的对象
5)通过MultipartHttpServletRequest拿到MultiValueMap(经过调试发现这个map只有一对键值对),其Value类型为MultipartFile,这个MultipartFile其实就是当前的块。
6)plupload.setMultipartFile(multipartFile);手动为plupload对象传入MultipartFile属性值。
7)如果总块数chunks大于1,那就将上传过来的一个个小块合成一个文件,否则那就直接拷贝块文件到目标文件multipartFile.transferTo(targetFile);
8)在chunks大于1时,首先要新建一个临时文件tempFile,用于不断不断将一个个小块写入这个tempFile,等写完后(chunks-nowChunk==1),就将其重命名(tempFile.renameTo(targetFile);)。
9)savePluploadFile(multipartFile.getInputStream(),tempFile,nowChunk==0?false:true);方法用于合并一个个小块文件,如果是第一块的话,就从头开始写入(newFileOutputStream(tempFile)),否则全部从末端写入(newFileOutputStream(tempFile,true))。
以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (8)
1.一种基于SpringMVC实现超大文件上传方法,其特征在于,
基于SpringMVC实现后台接收Chunk流,并根据顺序将上传的Chunk合并,形成原始文件。
2.根据权利要求1所述的方法,其特征在于,
基于第三方plupload插件,实现大文件分割成一个以上的的块即Chunk。
3.根据权利要求2所述的方法,其特征在于,
大文件按顺序分块上传,每个块大小一致,且按文件顺序传输。
4.根据权利要求3所述的方法,其特征在于,
首先初始化JS,下载plupload插件,并在项目中引入jQuery.plupload.queue.css,jquery-2.0.0.min.js,plupload.full.min.js,jquery.plupload.queue.js,zh_CN.js文件。
5.根据权利要求4所述的方法,其特征在于,
然后进行前端界面准备,准备上传功能按钮、界面,并实例化一个plupload对象时,即new plupload.Uploader(),需要传入一个对象作为配置参数,并根据需要配置plupload参数。
6.根据权利要求5所述的方法,其特征在于,
所述对象属性包括上传、暂停绑定时间、Chunk大小、支持上传文件的格式。
7.根据权利要求6所述的方法,其特征在于,
最后进行上传功能编写,后端获取plupload对象,通过文件流的方式保存到需要的服务器路径。
8.根据权利要求7所述的方法,其特征在于,
所述获取的plupload对象中包含Chunk、Chunk数量和文件流。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910938670.0A CN110519399A (zh) | 2019-09-30 | 2019-09-30 | 一种基于SpringMVC实现超大文件上传方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910938670.0A CN110519399A (zh) | 2019-09-30 | 2019-09-30 | 一种基于SpringMVC实现超大文件上传方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110519399A true CN110519399A (zh) | 2019-11-29 |
Family
ID=68634100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910938670.0A Pending CN110519399A (zh) | 2019-09-30 | 2019-09-30 | 一种基于SpringMVC实现超大文件上传方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110519399A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114884937A (zh) * | 2022-05-27 | 2022-08-09 | 宁夏中宁县京能新能源有限公司 | 一种新能源集控系统数据断点续传方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105338424A (zh) * | 2015-10-29 | 2016-02-17 | 努比亚技术有限公司 | 一种视频处理方法及系统 |
CN106101291A (zh) * | 2016-08-26 | 2016-11-09 | 苏州蓝海彤翔系统科技有限公司 | 一种传输文件的方法、系统、服务器及客户端 |
CN106657213A (zh) * | 2016-09-14 | 2017-05-10 | 深圳峰创智诚科技有限公司 | 文件传输方法和装置 |
-
2019
- 2019-09-30 CN CN201910938670.0A patent/CN110519399A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105338424A (zh) * | 2015-10-29 | 2016-02-17 | 努比亚技术有限公司 | 一种视频处理方法及系统 |
CN106101291A (zh) * | 2016-08-26 | 2016-11-09 | 苏州蓝海彤翔系统科技有限公司 | 一种传输文件的方法、系统、服务器及客户端 |
CN106657213A (zh) * | 2016-09-14 | 2017-05-10 | 深圳峰创智诚科技有限公司 | 文件传输方法和装置 |
Non-Patent Citations (4)
Title |
---|
BLFSHIYE: "plupload上传插件在SpringMVC中的整合", 《HTTPS://WWW.CNBLOGS.COM/BLFSHIYE/P/5283064.HTML》 * |
CGGAO: "plupload2.1.2文件合并", 《HTTPS://BLOG.CSDN.NET/WEIXIN_30600197/ARTICLE/DETAILS/98089045》 * |
PLUTO张强: "plupload上传与springMVC整合", 《HTTPS://WWW.JIANSHU.COM/P/7A2DD72A3E21》 * |
无双: "前端上传组件Plupload使用指南", 《HTTPS://WWW.CNBLOGS.COM/2050/P/3913184.HTML》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114884937A (zh) * | 2022-05-27 | 2022-08-09 | 宁夏中宁县京能新能源有限公司 | 一种新能源集控系统数据断点续传方法 |
CN114884937B (zh) * | 2022-05-27 | 2024-01-09 | 宁夏中宁县京能新能源有限公司 | 一种新能源集控系统数据断点续传方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103648019A (zh) | 一种基于hls协议的视频下载方法及其装置 | |
KR101280753B1 (ko) | 클라우드 서비스 액세스 장치, 클라우드 서비스 액세스 방법 및 클라우드 서비스 액세스 시스템 | |
CN107438102A (zh) | 一种云平台镜像制作系统及其方法 | |
US9158840B2 (en) | Content-based navigation for electronic devices | |
US20160164994A1 (en) | Processing hybrid data using a single web client | |
CN103970779B (zh) | 一种文件的分类方法、装置和设备 | |
US11714783B2 (en) | Browsable data and data retrieval from a data archived image | |
CN103150402A (zh) | 基于索引编码的虚拟文件系统及建立方法、访问方法 | |
US11775176B2 (en) | Terminal device, data management system, and server device | |
US20160196008A1 (en) | Implementing desktops on a mobile terminal | |
CN103051652A (zh) | 一种移动终端云计算发布平台 | |
CN110597773A (zh) | 在计算机设备和虚拟现实设备之间共享文件的方法和装置 | |
CN110519399A (zh) | 一种基于SpringMVC实现超大文件上传方法 | |
CN103379164A (zh) | 照相机及其处理文件的方法 | |
CN105718569A (zh) | 复合文档的上传方法、装置及系统 | |
CN103944949A (zh) | 文件上传的方法和系统、以及云存储设备 | |
US20230101774A1 (en) | Techniques for performing clipboard-to-file paste operations | |
CN110413588A (zh) | 分布式对象存储方法、装置、计算机设备和存储介质 | |
US20190199543A1 (en) | Information processing device, information processing system, and information processing method | |
US20170109010A1 (en) | File Folder Display | |
CN108509396A (zh) | Pdf文件转图片的方法、电子装置及计算机可读存储介质 | |
CN106844763B (zh) | 一种对互联网媒体文件进行修改式展现的方法及其装置 | |
CN104717175A (zh) | 虚拟桌面的处理方法和系统 | |
WO2020026014A2 (zh) | 视频处理方法、装置、设备/终端/服务器及计算机可读存储介质 | |
CN113918519A (zh) | 一种文件夹挂载方法、装置及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191129 |