blog-comments icon indicating copy to clipboard operation
blog-comments copied to clipboard

使用Spring Boot上传文件 - 纯洁的微笑的博客

Open ityouknow opened this issue 7 years ago • 29 comments

http://www.ityouknow.com/springboot/2018/01/12/spring-boot-upload-file.html

使用thymeleaf制作上传页面,Spring Boot接收文件并保持到本地。

ityouknow avatar Jan 12 '18 01:01 ityouknow

挺好的,谢谢了

GongFuXiaoZi avatar Jan 15 '18 05:01 GongFuXiaoZi

你为何如此优秀

jackycaojiaqi avatar Jan 24 '18 03:01 jackycaojiaqi

多文件上传如何解决呢?

zhouqingbiao avatar Feb 05 '18 01:02 zhouqingbiao

@zhouqingbiao 多文件上传如何解决呢?

可以前端控制,循环多次请求后台( 没试过 );或是接收参数用MultipartFile[]数组的方式(没试过);或是使用MultipartHttpServletRequest接收,其继承了MultipartRequest类,可以调用getFiles()方法来获得多个文件(没试过);我也是有根据的瞎说,你可以试试。。。

DoNotWannaTry avatar Feb 07 '18 09:02 DoNotWannaTry

UPLOADED_FOLDER 请问path这个参数是什么意思呢

lanbingxing avatar Mar 01 '18 08:03 lanbingxing

@guanzhiyou

@zhouqingbiao 多文件上传如何解决呢?

可以前端控制,循环多次请求后台( 没试过 );或是接收参数用MultipartFile[]数组的方式(没试过);或是使用MultipartHttpServletRequest接收,其继承了MultipartRequest类,可以调用getFiles()方法来获得多个文件(没试过);我也是有根据的瞎说,你可以试试。。。

后端这样 @PostMapping("/upload") public String singleFileUpload(@RequestParam("files") MultipartFile[] files, RedirectAttributes redirectAttributes) { }

前台

Spring Boot file upload example



我试过可以

gnerv avatar Mar 02 '18 14:03 gnerv



gnerv avatar Mar 02 '18 14:03 gnerv

@guanzhiyou

@zhouqingbiao 多文件上传如何解决呢?

可以前端控制,循环多次请求后台( 没试过 );或是接收参数用MultipartFile[]数组的方式(没试过);或是使用MultipartHttpServletRequest接收,其继承了MultipartRequest类,可以调用getFiles()方法来获得多个文件(没试过);我也是有根据的瞎说,你可以试试。。。

前台



gnerv avatar Mar 02 '18 14:03 gnerv

@guanzhiyou

@zhouqingbiao 多文件上传如何解决呢?

可以前端控制,循环多次请求后台( 没试过 );或是接收参数用MultipartFile[]数组的方式(没试过);或是使用MultipartHttpServletRequest接收,其继承了MultipartRequest类,可以调用getFiles()方法来获得多个文件(没试过);我也是有根据的瞎说,你可以试试。。。

我靠 没写上

gnerv avatar Mar 02 '18 14:03 gnerv

@guanzhiyou

@zhouqingbiao 多文件上传如何解决呢?

可以前端控制,循环多次请求后台( 没试过 );或是接收参数用MultipartFile[]数组的方式(没试过);或是使用MultipartHttpServletRequest接收,其继承了MultipartRequest类,可以调用getFiles()方法来获得多个文件(没试过);我也是有根据的瞎说,你可以试试。。。

我靠 还没写上 (input type="file" multiple name="file" )

gnerv avatar Mar 02 '18 14:03 gnerv

按照博主的demo请求点击上传之后,文件上传成功,但是返回页面(重定向)出现错误,是怎么回事?控制台无报错,页面信息如下: Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback. Fri Mar 09 17:42:13 CST 2018 There was an unexpected error (type=Not Found, status=404). No message available

bufflu avatar Mar 09 '18 09:03 bufflu

启动类中如果报错:TomcatEmbeddedServletContainerFactory无法加载 是因为使用的Spring Boot2.0新版本,新版本已经把以上这个类更改为TomcatServletWebServerFactory 详情请查看:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide

xiolovelife avatar Mar 27 '18 07:03 xiolovelife

springboot怎么限制上传文件的类型啊?

Tjddy avatar Apr 16 '18 08:04 Tjddy

@guanzhiyou

@zhouqingbiao 多文件上传如何解决呢?

可以前端控制,循环多次请求后台( 没试过 );或是接收参数用MultipartFile[]数组的方式(没试过);或是使用MultipartHttpServletRequest接收,其继承了MultipartRequest类,可以调用getFiles()方法来获得多个文件(没试过);我也是有根据的瞎说,你可以试试。。。

可以参考我的方法: http://www.cnblogs.com/tibit/p/7819893.html。 multipart多文件上传,我觉得分三种,一种是一个file框选多个,还有就是一个框选一个,但有多个框,再或者是两种的组合。我的写法应该是能解决最复杂的上传组合,如果你的业务没这么麻烦,那么写法应该只会更简单。

czs208112 avatar Apr 30 '18 03:04 czs208112

总结的非常详细,给作者点个赞!

caixiongqi avatar May 09 '18 01:05 caixiongqi

http://localhost:8080/uploadSign,这个接口有写过吗?

lbxgit avatar Jun 05 '18 07:06 lbxgit

老铁,你代码能不能给正确的,上传文件,springboot重定向老是报404,求解啊

yuhangchange avatar Jun 29 '18 02:06 yuhangchange

_20180706125344

图片上传报错:400:Required request part 'file' is not present

change9326 avatar Jul 06 '18 05:07 change9326

上面解决tomcat因为文件过大连接重置的代码中,TomcatEmbeddedServletContainerFactory在springboot2.0中已经被替换为TomcatServletWebServerFactory

chaoQWQ avatar Jul 31 '18 12:07 chaoQWQ

大神牛逼

zhoubiao188 avatar Nov 04 '18 07:11 zhoubiao188

@bufflu 按照博主的demo请求点击上传之后,文件上传成功,但是返回页面(重定向)出现错误,是怎么回事?控制台无报错,页面信息如下: Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback. Fri Mar 09 17:42:13 CST 2018 There was an unexpected error (type=Not Found, status=404). No message available

我也是这个问题 我觉得是重定向之后 再次发出一个请求 去访问templates里面的页面 但是templates里面的内容应该是不能直接通过url访问的 所以就404了 解决办法的话 我也不知道用redirectattributes解决 我直接把那个功能用model解决了

LZY97 avatar Mar 27 '19 02:03 LZY97

获益匪浅

NickAndFreya avatar May 21 '19 08:05 NickAndFreya

使用MultiPartFile 的时候 报错 400: Unable to parse form content

Testimonys avatar Sep 25 '19 08:09 Testimonys

按照博主的demo请求单击上传之后,文件上传成功,但是返回页面(重定向)出现错误,是怎么回事?控制台无报错,页面信息如下: Whitelabel Error Page

此应用程序没有针对/ error的显式映射,因此您将其视为后备。 Fri Mar 09 17:42:13 CST 2018 有一个意外错误(type = Not Found,status = 404)。 无讯息

控制器下加 @RequestMapping("/uploadStatus") public String Status(@ModelAttribute("message") String message) { return "uploadStatus"; } 就可以解决问题了

ACode-Dreamer avatar Oct 14 '19 11:10 ACode-Dreamer

请注意这里是spring boot 1.4或者1.5版本,使用spring.http.multipart.xxxx配置项。 而在spring boot 2.x版本,要使用spring.servlet.multipart.xxxx配置项。 在spring boot 1.3版本,要使用multipart.xxxx配置项。 否则配置是无效的哦

waconde avatar Nov 06 '19 02:11 waconde

这里说一下,我看源码MultipartException默认只有一个子类:MaxUploadSizeExceededException,即超过文件上传大小限制异常,然后我为了测试这个全局异常处理类handleError1,不停上传超限制大小的文件,结果一直连接已重置,我就想怎么uploadStatus获取不到报错信息呢?一直已重置?我一定要让它显示报错信息!然后调注解、改返回值、改参数搞了半天发现,这不就是回到了开头吗?tomcat上传文件超过限制就会连接已重置,全局异常处理类都捕获不到。要想测试这个全局异常处理类,得自己写MultipartException子类,不能直接用MaxUploadSizeExceededException......

waconde avatar Nov 06 '19 03:11 waconde

如果使用springboot2.0 无论是用TomcatServletWebServerFactory还是MultipartConfigElement都会导致tomcat对文件大小的限制高于springboot配置中的限制,要么连接重置捕获不到异常要么文件直接上传成功了 解决办法:在application.properties中添加 server.tomcat.max-swallow-size=-1

supercai0125 avatar Jan 09 '20 03:01 supercai0125

@waconde 这里说一下,我看源码MultipartException默认只有一个子类:MaxUploadSizeExceededException,即超过文件上传大小限制异常,然后我为了测试这个全局异常处理类handleError1,不停上传超限制大小的文件,结果一直连接已重置,我就想怎么uploadStatus获取不到报错信息呢?一直已重置?我一定要让它显示报错信息!然后调注解、改返回值、改参数搞了半天发现,这不就是回到了开头吗?tomcat上传文件超过限制就会连接已重置,全局异常处理类都捕获不到。要想测试这个全局异常处理类,得自己写MultipartException子类,不能直接用MaxUploadSizeExceededException......

你好,可以给一下具体的代码看看吗,谢谢你

jinshihui88 avatar Jan 10 '20 03:01 jinshihui88

@supercai0125 如果使用springboot2.0 无论是用TomcatServletWebServerFactory还是MultipartConfigElement都会导致tomcat对文件大小的限制高于springboot配置中的限制,要么连接重置捕获不到异常要么文件直接上传成功了 解决办法:在application.properties中添加 server.tomcat.max-swallow-size=-1

牛逼,解决了我的问题

Isen-j avatar Dec 08 '20 03:12 Isen-j