这几天想完成个前端文件上传,后端接受然后上传到阿里云并存入数据库,来讲讲具体实现和遇到的坑
这第一个就是前后端传递问题,首先前端form表单里面需要有一个file标签(这个不会还有人不知道吧),后端接受要用MultipartFile这个类new出来的对象接受(可以再类里面封装传递)
运行:报错
后来改好了,坑就是下面两点:
form表单一定要加
enctype="multipart/form-data" 和 method="post"
两个缺一不可,一定是post请求所以不加post还是会出错
然后上传了一个1m的视频发现一切正常,然而这样就好使了吗?太天真了,下面就是第二个坑
文件太大,大于最大的限制,其实这个解决简单,但是我深入底层看了一下,想看一下底层的往最下面看,不想看的请忽略
由于建的事springboot项目直接在配置文件加
#单次请求所有图片最大100Mb
spring.servlet.multipart.max-request-size=100MB
spring.servlet.multipart.max-file-size=100MB
成功解决
最后看一下底层:
错误如下:
可以看到意思就是当前文件95833843超过了自动配置的最大字节数10485760也就是10M
点进去spring.servlet.multipart.max-request-size这个类可以看到
设置最大大小的方法,我们再看看这个DataSize这个类,点进去
一目了然
上来先对参数拆分,所以我们写成100MB它可以识别并且匹配不同的方法设置不同大小