SpringMVC 文件上传接收方式

开发中,常常需要提交表单,表单数据一般都是键值对的组合,对于一般文本内容我们这里不做探究,想说一下对于文件上传的处理。我们常用的服务端开发框架是SpringMVC,基于此有两种上传表单数据的方案
\color{red}{在这两种方案之前我们需要先做一件事,配置spring-mvc.xml}

<!-- 文件上传下载配置-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置最大上传文件大小100MB -->
        <property name="maxUploadSize">
            <value>104857600</value>
        </property>
        <property name="maxInMemorySize">
            <value>4096</value>
        </property>
</bean>
  1. 使用@RequestParam注解方式
    这种方式能直接拿到文件,接收注解内所写关键词的文件请求
  • 单文件
    @RequestParam("file") MultipartFile file
  • 多文件
    @RequestParam("files") MultipartFile[] files
    可以看出这是一个MultipartFile数组

  1. 使用HttpServletRequest 接收方式
    这种方式需要经过处理才能拿到需要的数据,适用于多文件且不知道文件关键词的情况,动态表单适用
  • 验证过的代码
//转化成MultipartHttpServletRequest 
MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
//表单除了文件外的参数
Map<String, String[]> parameterMap = multipartHttpServletRequest.getParameterMap();
//表单上传的文件
MultiValueMap<String, MultipartFile> multiValueMap =multipartHttpServletRequest.getMultiFileMap();
//转化成MultipartHttpServletRequest 
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//获取map,遍历map 取 value = MultipartFile
//这种方式不需要固定文件请求字段,随便写什么都可以,只要不重复。file1,file2,upload1,upload2都可以
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
//这种方式和MultipartFile[]一样,指定接收file字段文件请求
List<MultipartFile> files = multipartRequest.getFiles("file");
参考资料
  1. springmvc 多文件上传接收方式
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容