ityouknow / blog-comments

15 stars 0 forks source link

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

Open ityouknow opened 6 years ago

ityouknow commented 6 years ago

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

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

GongFuXiaoZi commented 6 years ago

挺好的,谢谢了

jackycaojiaqi commented 6 years ago

你为何如此优秀

zhouqingbiao commented 6 years ago

多文件上传如何解决呢?

DoNotWannaTry commented 6 years ago

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

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

lanbingxing commented 6 years ago

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

gnerv commented 6 years ago

@guanzhiyou

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

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

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

前台 <!DOCTYPE html>

Spring Boot file upload example



我试过可以

gnerv commented 6 years ago


gnerv commented 6 years ago

@guanzhiyou

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

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

前台



gnerv commented 6 years ago

@guanzhiyou

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

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

我靠 没写上

gnerv commented 6 years ago

@guanzhiyou

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

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

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

bufflu commented 6 years ago

按照博主的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

xiolovelife commented 6 years ago

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

Tjddy commented 6 years ago

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

czs208112 commented 6 years ago

@guanzhiyou

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

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

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

caixiongqi commented 6 years ago

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

lbxgit commented 6 years ago

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

yuhangchange commented 6 years ago

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

change9326 commented 6 years ago
_20180706125344

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

chaoQWQ commented 6 years ago

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

zhoubiao188 commented 5 years ago

大神牛逼

LZY97 commented 5 years ago

@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解决了

NickAndFreya commented 5 years ago

获益匪浅

Testimonys commented 4 years ago

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

ACode-Dreamer commented 4 years ago

按照博主的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"; } 就可以解决问题了

waconde commented 4 years ago

请注意这里是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 commented 4 years ago

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

supercai0125 commented 4 years ago

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

jinshihui88 commented 4 years ago

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

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

Isen-j commented 3 years ago

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

牛逼,解决了我的问题