springboot接收前端上传到后端的文件时,在controller层内大多数使用的是MultipartFile
进行接收的,当使用file进行接收时会报错
有大佬知道为啥不能用file接收文件吗?
springboot接收前端上传到后端的文件时,在controller层内大多数使用的是MultipartFile
进行接收的,当使用file进行接收时会报错
有大佬知道为啥不能用file接收文件吗?
楼上说的很清楚了,你使用MultipartFile类进行接收的时候,看看有什么方法能给你用?当数据在网络间传输的时候,是以文件输入流的形式也就是经过序列化的,自然就不能用文件类来接收了,所以Spring就包装了一个MultipartFile类用于接收,注意它是Spring框架的,不引入Spring没法用:
再看看它的源码注释,作者表示“这是一种可以接收使用多种请求方式来进行上传文件的代表形式。这个文件内容可以存储到内存中或者存储在磁盘的临时位置上。两种情形下,如果有需要用户都可以自由地拷贝文件内容到session存储中,或者以一种永久存储的形式进行存储。这种临时性的存储在请求结束之后将会被清除掉。”所以你可以使用MultipartFile类型对象进行接收后,把它转成文件保存到你需要的地方去,也可以只读取它的内容而不保存下来。
为此它还贴心的提供了保存文件到指定位置的方法:
可以看到默认实现就是把输入流读入内存再用输出流输出到指定路径,当然它的子类有不同的实现。
1 回答1.2k 阅读
1 回答1.1k 阅读
1.2k 阅读
很简单,因为
File
类代表的是本地一个实体文件,而前端上传上来的只是一个数据流
(stream),再直白点说,它肯定不是你服务器端一个实体文件对吧?所以不能用File类。你后端处理的时候,如果想保存成本地文件,肯定得把前端传过来的文件流写入某个文件对吧,这时候才是真正的
File