美文网首页Spring专题
SpringBoot中如何使用SpringMVC上传文件?

SpringBoot中如何使用SpringMVC上传文件?

作者: 自律赢 | 来源:发表于2019-11-18 20:33 被阅读0次

    今天我们要说的这个话题很简单,不要问为啥,因为SpringBoot,哈哈。现在SpringBoot可以说人人都会用了,它的好处是显而易见的,大大的简化了配置,一起来看看吧。

    我们分以下3种情况来谈这个话题。

    第一种:上传单个文件

    先来看一下form表单的设置,如下图所示:

    单个文件的form

    form表单要满足以下3点才行:

    form表单的method属性的值是POST

    form表单的enctype属性的值是multipart/form-data

    上传文件的input的类型要是file

    SpringMVC的设置如下:

    SpringMVC接收单个文件

    从图中可以看出服务端的写法非常简单,直接写Controller就行了。简单地说明一下,processUpload方法的参数要用MultipartFile接口来接收,这样SpringMVC才能接收到文件类型的输入项,之所以这么简单主要是因为SpringBoot已经为我们做好了所有的准备工作。当然了@RequestParam注解也可以换成@RequestPart,如图:

    @RequestPart

    我们这个这里返回了"redirect:/",用于重定向到根路径。

    那么接下来我们就来看一下怎么上传多个文件。

    第二种:不同的name上传多个文件

    这种是由上传单一文件引申出来的,其实就是form表单上传多个数据项,只不过有多个file类型的input。这些多个不同的input通过name进行区分。如下图的3个input的name分别是file1、file2、file3:

    多个不同的name

    SpringMVC端就用多个参数来接收,很简单的,如下图:

    接收多个file

    这种场景属于上传多个图片,还不是通常意义上的批量上传,一个name代表一个种类,每个种类下含有一张图片。

    第三种:同一个name上传多个文件

    这种方式是把表单中的file类型的input设置成同一个name,这样SpringMVC就会把它们当做数组或列表来对待,form表单的写法如下,它们的name都是files:

    同一个name

    SpringMVC端使用MultipartFile列表来接收文件如下图,其中txt用于接收表单中的一个输入框:

    List接收文件

    如果换成数组接收的话就如同下图所示:

    数组接收文件

    这种场景才属于真正意义上的批量上传,比如同一个主题下的多个图片。

    MultipartFile接口提供的方法

    我们现在看一下MultipartFile接口的一些方法,理解这些方法对于编程还是很有好处的,可以快速提高我们的开发效率。

    String getName();

    获取参数在表单中的名称

    String getOriginalFilename();

    获取文件的原始名称,比如你上传的是apple.jpeg,那么这个方法返回的就是apple.jpeg。

    String getContentType();

    返回http请求的ContentType

    boolean isEmpty();

    判断上传的文件是否为空

    long getSize();

    返回文件的字节数形式的大小

    byte[] getBytes();

    返回文件的字节数组

    InputStream getInputStream();

    返回一个代表该文件的输入流,通常用于关闭流

    void transferTo(File dest);

    把接收到的文件写入到目的文件中,如果目的文件已经存在了则会先进行删除。用法如下:

    file.transferTo(new File("/Users/i/apple.jpeg"));

    void transferTo(Path dest)

    作用同void transferTo(File dest);

    总结

    好了,今天的内容就这些了,主要和大家分享了基于SpringBoot的上传文件的方式,包括上传单个文件,上传多个不同name的文件和上传多个相同name的文件。另外还介绍了MultipartFile接口的常用功能。其中transferTo还是很实用的。

    今天的内容就到这里了,小伙伴们有什么疑问可以在评论区留言哦。

    相关文章

      网友评论

        本文标题:SpringBoot中如何使用SpringMVC上传文件?

        本文链接:https://www.haomeiwen.com/subject/qotiictx.html