Spring Boot中如何实现文件分片上传功能?

2026-05-29 15:373阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计750个文字,预计阅读时间需要3分钟。

Spring Boot中如何实现文件分片上传功能?

这篇文章主要介绍了Spring Boot如何实现文件上传切片上传,内容中通过示例代码进行了详细说明,对初学者或工作者具有一定的参考价值,需要的朋友可以参考学习。文件上传是Web开发中常见的功能,以下是一个简单的示例:

这篇文章主要介绍了spring boot如何实现切割分片上传,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

文件上传是web开发中经常会遇到的

springboot的默认配置为10MB,大于10M的是传不上服务器的,需要修改默认配置

但是如果修改支持大文件又会增加服务器的负担。

当文件大于一定程度时,不仅服务器会占用大量内存,而且github.com/fex-team/webuploader/releases

Spring Boot中如何实现文件分片上传功能?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="www.w3.org/1999/xhtml"> <head> <meta localhost:8080/api/upload/part', formData:{ guid : GUID }, pick: '#picker', chunked : true, // 分片处理 chunkSize : 1 * 1024 * 1024, // 每片1M, chunkRetry : false,// 如果失败,则不重试 threads : 1,// 上传并发数。允许同时最大上传进程数。 resize: false }); $("#startBtn").click(function () { uploader.upload(); }); //当文件上传成功时触发。 uploader.on( "uploadSuccess", function( file ) { $.post('localhost:8080/api/upload/merge', { guid: GUID, fileName: file.name}, function (data) { if(data.code == 200){ alert('上传成功!'); } }); }); </script> </html>

(2)不使用插件

直接用HTML5的File API

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="www.w3.org/1999/xhtml"> <head> <script src="jquery-1.10.1.min.js" type="text/javascript"> </script> <meta content="text/html; charset=utf-8" localhost:8080/api/upload/part", type: "POST", data: form, async: true, //异步 processData: false, //很重要,告诉jquery不要对form进行处理 contentType: false, //很重要,指定为false才能形成正确的Content-Type success: function(data){ status++; if(data.code == 200){ $("#output").html(status+ " / " + chunks); } if(status==chunks){ now.mergeFile(GUID,name); } } }); }, mergeFile:function(GUID,name){ var formMerge = new FormData(); formMerge.append("guid", GUID); formMerge.append("fileName", name); $.ajax({ url: "localhost:8080/api/upload/merge", type: "POST", data: formMerge, processData: false, //很重要,告诉jquery不要对form进行处理 contentType: false, //很重要,指定为false才能形成正确的Content-Type success: function(data){ if(data.code == 200){ alert('上传成功!'); } } }); }, guid:function(prefix){ var counter = 0; var guid = (+new Date()).toString( 32 ), i = 0; for ( ; i < 5; i++ ) { guid += Math.floor( Math.random() * 65535 ).toString( 32 ); } return (prefix || 'wu_') + guid + (counter++).toString( 32 ); } }; $(function(){ page.init(); }); </script> </html>

3.优化 

springboot的默认配置为10MB,前端分片改为20M时,就会报错

org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (10486839) exceeds the configured maximum (10485760)

解决方法:

在 src/main/resources 下的 application.properties里添加

spring.servlet.multipart.max-file-size=30MB spring.servlet.multipart.max-request-size=35MB

说明:

设置的数值虽好比前端传过来的大,要不容易报错

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

本文共计750个文字,预计阅读时间需要3分钟。

Spring Boot中如何实现文件分片上传功能?

这篇文章主要介绍了Spring Boot如何实现文件上传切片上传,内容中通过示例代码进行了详细说明,对初学者或工作者具有一定的参考价值,需要的朋友可以参考学习。文件上传是Web开发中常见的功能,以下是一个简单的示例:

这篇文章主要介绍了spring boot如何实现切割分片上传,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

文件上传是web开发中经常会遇到的

springboot的默认配置为10MB,大于10M的是传不上服务器的,需要修改默认配置

但是如果修改支持大文件又会增加服务器的负担。

当文件大于一定程度时,不仅服务器会占用大量内存,而且github.com/fex-team/webuploader/releases

Spring Boot中如何实现文件分片上传功能?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="www.w3.org/1999/xhtml"> <head> <meta localhost:8080/api/upload/part', formData:{ guid : GUID }, pick: '#picker', chunked : true, // 分片处理 chunkSize : 1 * 1024 * 1024, // 每片1M, chunkRetry : false,// 如果失败,则不重试 threads : 1,// 上传并发数。允许同时最大上传进程数。 resize: false }); $("#startBtn").click(function () { uploader.upload(); }); //当文件上传成功时触发。 uploader.on( "uploadSuccess", function( file ) { $.post('localhost:8080/api/upload/merge', { guid: GUID, fileName: file.name}, function (data) { if(data.code == 200){ alert('上传成功!'); } }); }); </script> </html>

(2)不使用插件

直接用HTML5的File API

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="www.w3.org/1999/xhtml"> <head> <script src="jquery-1.10.1.min.js" type="text/javascript"> </script> <meta content="text/html; charset=utf-8" localhost:8080/api/upload/part", type: "POST", data: form, async: true, //异步 processData: false, //很重要,告诉jquery不要对form进行处理 contentType: false, //很重要,指定为false才能形成正确的Content-Type success: function(data){ status++; if(data.code == 200){ $("#output").html(status+ " / " + chunks); } if(status==chunks){ now.mergeFile(GUID,name); } } }); }, mergeFile:function(GUID,name){ var formMerge = new FormData(); formMerge.append("guid", GUID); formMerge.append("fileName", name); $.ajax({ url: "localhost:8080/api/upload/merge", type: "POST", data: formMerge, processData: false, //很重要,告诉jquery不要对form进行处理 contentType: false, //很重要,指定为false才能形成正确的Content-Type success: function(data){ if(data.code == 200){ alert('上传成功!'); } } }); }, guid:function(prefix){ var counter = 0; var guid = (+new Date()).toString( 32 ), i = 0; for ( ; i < 5; i++ ) { guid += Math.floor( Math.random() * 65535 ).toString( 32 ); } return (prefix || 'wu_') + guid + (counter++).toString( 32 ); } }; $(function(){ page.init(); }); </script> </html>

3.优化 

springboot的默认配置为10MB,前端分片改为20M时,就会报错

org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (10486839) exceeds the configured maximum (10485760)

解决方法:

在 src/main/resources 下的 application.properties里添加

spring.servlet.multipart.max-file-size=30MB spring.servlet.multipart.max-request-size=35MB

说明:

设置的数值虽好比前端传过来的大,要不容易报错

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。