java+大文件上传解决方案

众所皆知,web上传大文件,一直是一个痛。上传文件大小限制,页面响应时间超时.这些都是web开发所必须直面的。本文给出的解决方案是:前端实现数据流分片长传,后面接收完毕后合并文件的思路。实现文件夹上传,要求:服务端保留层级结构,支持10w级别的文件夹上传。大文件上传及断点续传,要求:支持50G级的单个文件上传和续传。续传要求:在刷新浏览器后能够续传上传,在重启浏览器后能够继续上传上(关闭浏览器后重新打开),在重启电脑后能够继续上传。支持PC端全平台,Windows,Mac,Linux浏览器要求支持全部浏览器,包括ie6,ie7,ie8,ie9,Chrome,Firefox 下面贴出简易DEMO源码分享:前端页面: 后端代码,此Demo是基于MVC架构的:后端代码我进行了模块划化,而不是网上的将所有的模块放在一个类中,这样对于以后的维护和升级来说都是一个灾难。 文件块处理逻辑 文件块保存逻辑如下 web.xml配置如下 整个项目的截图 依赖的JAR包如下 运行效果如下: 在此分享!希望多多指正~后端...

java+文件上传

javaweb上传文件上传文件的jsp中的部分上传文件同样可以使用form表单向后端发请求,也可以使用ajax向后端发请求    1.通过form表单向后端发送请求         <formid="postForm" action="${pageContext.request.contextPath}/UploadServlet" method="post" enctype="multipart/form-data">            <divclass="bbxxwrap">                <inp...
代码星球 代码星球·2020-04-03

java文件上传系统

我们平时经常做的是上传文件上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。此控件PC全平台支持包括mac,linux系统的文件上传,文章末尾将附上控件下载与教程链接   首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有大小限制,post没有) 2.表单的enctype属性:必须设置为multipart/form-data. 3.表单必须有文件上传项:file,且文件项需要给定name值   上传文件夹需要增加一个属性webkitdirectory,像这样: <inputid="fileFolder"name="fileFolder"type="file"  webkitdirectory> 工程截图   功能介绍   树形目录导航。您可以通过树型目录导航和路径导航栏快速跳转到指定目录。在跳转后树型目录将会自...
代码星球 代码星球·2020-04-03

java+根据多个url批量下载文件

1.基本流程当我们想要下载网站上的某个资源时,我们会获取一个url,它是服务器定位资源的一个描述,下载的过程有如下几步:(1)客户端发起一个url请求,获取连接对象。(2)服务器解析url,并且将指定的资源返回一个输入流给客户。(3)建立存储的目录以及保存的文件名。(4)输出了写数据。(5)关闭输入流和输出流。2.实现代码的方法/**    *从网络Url中下载文件    *@paramurlStr    *@paramfileName    *@paramsavePath    *@throwsIOException    */   publicstaticvoid downLoadFromUrl(StringurlStr,StringfileName,StringsavePath)throwsIOExcep...

java上传大文件解决方案

需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在10G内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以10G来进行限制。第一步:前端修改由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify文件上传组件,在项目使用的jslib项目中找到了BJUI框架集成jQueryUploadify的部分,这部分代码封装在up6.js文件中,在up6.js文件中的全局变量定义中有以下部分代码,这就是定义的有关于上传的Uploadify控件的重要变量: upload:{uploadLimit:5,fileSizeLimit:31744,removeTimeout:0.8}以上三个变量代表的含义是:uploadLimit:表示上传文件个数的限制,5表示文件上传个数限制是5个fileSizeLimit:表示上传文件大小的限制,31744单位是KB,也就是表示31MremoveTimeout:表示移除文件的时间限制继续查找使用到这些变量的地方,看到了文件大小超出限制等 了解了BJUI前端框架对于...

java+服务器上传和下载文件

在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。先说下要求:PC端全平台支持,要求支持Windows,Mac,Linux支持所有浏览器。支持文件批量上传支持文件上传,且要求在服务端保留层级结构。文件夹数量要求支持到10W。支持大文件断点续传,要求刷新浏览器,重启浏览器,重启电脑后仍然能够继续上传文件大小要求能够支持到50个G。支持自动加载本地文件,要求能够自动加载指定的本地文件。支持文件批量下载,要求不要在服务器打包。因为50G的文件在服务器打包时间比较长。支持文件夹下载,要求不要在服务器打包,下载到本地后要求保留层级结构文件列表面板支持路径导航,新建文件夹   对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件。这个common-fileupload上传组件的jar包可以去apache官网上面下载...

java多线程批量下载文件

多线程下载文件平时开发中有时会用到文件下载,为了提高文件下载速率,采用多线程下载能够达到事半功倍的效果:packagetest;/** *文件下载类 *@authorluweicheng * */ importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.InputStream;importjava.io.RandomAccessFile;importjava.net.HttpURLConnection;importjava.net.URL;importjava.net.URLConnection; publicclassDownFile{   privateURLfileUrl;//文件下载路径   privateintthreadCount;//文件下载的线程数   private...

java上传视频文件

需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。 第一步:前端修改由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify文件上传组件,在项目使用的jslib项目中找到了BJUI框架集成jQueryUploadify的部分,这部分代码封装在bjui-all.js文件中,在bjui-all.js文件中的全局变量定义中有以下部分代码,这就是定义的有关于上传的Uploadify控件的重要变量://文件上传对象function FileUploader(fileLoc,mgr){    var _this= this;    this.id=fileLoc.id;    this.ui={msg: null,process: null,percent...
代码星球 代码星球·2020-04-03

java+实现上传文件

我们平时经常做的是上传文件上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。首先我们需要了解的是上传文件三要素:1.表单提交方式:post(get方式提交有大小限制,post没有)2.表单的enctype属性:必须设置为multipart/form-data.3.表单必须有文件上传项:file,且文件项需要给定name值上传文件夹需要增加一个属性webkitdirectory,像这样:<inputid="fileFolder"name="fileFolder"type="file"  webkitdirectory>js中可以判断文件夹中文件数量及文件夹大小是否符合要求,不符合要求不能向后台提交:前台HTML模板选择文件,选择文件夹,粘贴文件文件夹的逻辑 后台在接收文件夹时不同之处在需要用MultipartHttpServletRequest server端的包和类  f_post.jsp页面的处理逻辑  生成文件名称的逻辑  以下是ser...

java+HTML5实现断点续传

一. 大文件上传基础描述:  各种WEB框架中,对于浏览器上传文件的请求,都有自己的处理对象负责对Http MultiPart协议内容进行解析,并供开发人员调用请求的表单内容。比如:Spring 框架中使用类似CommonsMultipartFile对象处理表二进制文件信息。而.NET 中使用HtmlInputFile/ HttpPostedFile对象处理二进制文件信息。优点:使用框架内置对象可以很方便的处理来自浏览器的MultiPart二进制信息请求,协议分析操作不用开发人员参与。缺点:其接收数据包过程完全被封闭在框架内置对象中,直到本次请求信息处理(接收)完毕后,才允许开发人员从接口调取表单及文件内容。上传过程中的进度信息无法访问,无法上传大尺寸文件(比如几百兆以上的大文件二进制信息)。目标:我们要在JAVA WEB框架中,依靠Filter过滤器的能力,实现不依靠框架内置对象,从浏览器请求字节流中解析MultiPart协议,取得本次用户请求的所有信息,包括多二进制文件信息及其他表单项信息。用户上传的文件尺寸将不受限制。而...

javaweb项目断点续传

这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数下面直接贴代码吧,一些难懂的我大部分都加上注释了:上传文件实体类:看得出来,实体类中已经有很多我们需要的功能了,还有实用的属性。如MD5秒传的信息。publicclassFileInf {      public FileInf(){}     publicStringid="";     publicStringpid="";    publicStringpidRoot="";        /**  * 表示当前项是否是一个文件夹项。    */    &...
代码星球 代码星球·2020-04-03

视频断点续传+java视频

之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需求,都能得到满足。小小开心了一把。  但无论插件再怎么灵活,也难以应付所有的需求,比如,你要上传一个2G的文件。以现在我们的网速,恐怕再快也得传半小时。要命的是,如果你在上传到90%的时候不小心关掉了浏览器,或者是手一抖摁了F5,完了,一切还得从头再来。这种用户体验简直太糟糕了。所以,断点续传就十分有必要了。什么是续传我就不解释了,用QQ传文件这么多年,大家都见过了。  这里要说的是断点续传都有哪些技术要点。使用传统的表单提交文件或是HTML5的FormData都是将文件“整块”提交,服务端取到该文件后再进行转移、重命名等操作,因此,无法实时保存文件的已上传部分。而且在http协议下,我们无法保持浏览器与服务端的长连接,不能以文件流的形式来提交。所以要解决的问题具体来讲有以下几点:对上传的文件进行分割,每次只上传一小片。服务端...
代码星球 代码星球·2020-04-03

java实现上传文件夹

我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。首先我们需要了解的是上传文件三要素:1.表单提交方式:post(get方式提交有大小限制,post没有)2.表单的enctype属性:必须设置为multipart/form-data.3.表单必须有文件上传项:file,且文件项需要给定name值上传文件夹需要增加一个属性webkitdirectory,像这样:<inputid="fileFolder"name="fileFolder"type="file"  webkitdirectory>不过webkitdirectory属性有个问题,只能支持高版本的chrome,不能支持低版本的IE,如ie6,ie7,ie8,不能做到全浏览器适配,运行环境比较单一。js中可以判断文件夹中文件数量及文件夹大小是否符合要求,不符合要求不能向后台提交:前台HTML模板this.GetHtmlFiles= function(){     var ...
代码星球 代码星球·2020-04-03

java+上传后的文件展示

文件夹结构支持大文件上传控件6支持向服务器上传整个文件夹,并且在服务端保存时与本地目录结构完全保持一致,同时在数据库中也保留文件夹的层级结构。开发人员可以借助于数据库中的层级信息方便的管理文件,管理人员也可以在服务器中直接对上传文件夹数据进行管理。大文件传输大文件上传控件6支持上传30G+的大型文件,且不限制文件类型。在文件上传过程中数据库的负载压力为0。在传输大文件过程中,控件会使用标准HTTP协议向服务器POST文件块数据。比如用户上传1G的文件时,up6会将1G的文件以1MB为单位分成1024个文件块然后依次传输。这样便会降低一整个大文件给系统带来的开销。  通用浏览器支持HttpUploader6支持windows平台下的所有主流浏览器,包括最常见的IE、Chrome、Firefox、Edge以及基于IE和Chrome内核的其他浏览器,如:360、搜狗、猎豹、百度等浏览器。文件断续传HttpUploader6在上传大型文件时会自动记录文件位置信息,在复杂的网络环境中,比如网络不稳定的情况下上传被中断后仍然能够从前一次上传的位置继续上传文件夹断点续传Htt...

java+http文件上传

在web项目中上传文件夹现在已经成为了一个主流的需求。在OA,或者企业ERP系统中都有类似的需求。上传文件夹并且保留层级结构能够对用户行成很好的引导,用户使用起来也更方便。能够提供更高级的应用支撑。文件夹数据表结构CREATETABLEIFNOTEXISTS `up6_folders`(  `f_id`               char(32) NOTNULL ,  `f_nameLoc`               varchar(255) default'',  `f_pid`         &...
代码星球 代码星球·2020-04-03
首页上一页...544545546547548...下一页尾页