CN110519399A - 一种基于SpringMVC实现超大文件上传方法 - Google Patents

一种基于SpringMVC实现超大文件上传方法 Download PDF

Info

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
Application number
CN201910938670.0A
Other languages
English (en)
Inventor
王宏达
邵辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Inspur Genersoft Information Technology Co Ltd
Original Assignee
Shandong Inspur Genersoft Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Inspur Genersoft Information Technology Co Ltd filed Critical Shandong Inspur Genersoft Information Technology Co Ltd
Priority to CN201910938670.0A priority Critical patent/CN110519399A/zh
Publication of CN110519399A publication Critical patent/CN110519399A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms
    • H04L67/108Resource 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实现超大文件上传方法
技术领域
本发明涉及文件上传技术,尤其涉及一种基于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数量和文件流。
CN201910938670.0A 2019-09-30 2019-09-30 一种基于SpringMVC实现超大文件上传方法 Pending CN110519399A (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114884937A (zh) * 2022-05-27 2022-08-09 宁夏中宁县京能新能源有限公司 一种新能源集控系统数据断点续传方法

Citations (3)

* Cited by examiner, † Cited by third party
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 深圳峰创智诚科技有限公司 文件传输方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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