第四章:Spring项目文件上传两种方式(全解析)

  1. 云栖社区>
  2. 博客>
  3. 正文

第四章:Spring项目文件上传两种方式(全解析)

jimisun 发布时间:2018-10-09 17:51:54 浏览63171 评论4

摘要: 如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系。本系列教程希望您能站在上帝的角度去观察(了解)Java体系。使Java的各种后端技术在你心中模块化;让你在工作中能将Java各个技术了然于心;能够即插即用。

欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系。本系列教程希望您能站在上帝的角度去观察(了解)Java体系。使Java的各种后端技术在你心中模块化;让你在工作中能将Java各个技术了然于心;能够即插即用。本章我们来一起了解Spring的文件上传全解析。

首先对于Spring的文件上传,我们仅仅需要关注三点

  1. Spring需要具备解析Multipart能力
  2. 前端需要文件转换为Multipart请求
  3. 在Controller中接收Multipart请求

在Spring项目中配置Multipart解析器

  • StandardServletMultipartResolver
  • CommonsMultipartResolver

在JavaConfig中配置StandardServletMultipartResolver

 @Bean
    public MultipartResolver multipartResolver() throws IOException {
        return new StandardServletMultipartResolver();
    }
 @Override
    protected void customizeRegistration(ServletRegistration.Dynamic registration) {
        registration.setMultipartConfig(new MultipartConfigElement("D://"));
    }

在JavaConfig配置CommonsMultipartResolver

  @Bean
    public MultipartResolver multipartResolver() throws IOException {
        CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();
        commonsMultipartResolver.setUploadTempDir(new FileSystemResource("/temp"));
        return commonsMultipartResolver;
    }

在XML配置CommonsMultipartResolver

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="104857600"/>
        <property name="maxInMemorySize" value="4096"/>
        <property name="defaultEncoding" value="UTF-8"></property>
    </bean>

在前端传递multipart请求

<form action="/fileUpload" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="submit">
</form>

在Controller方法参数中接收multipart请求

  • @RequestPart("file") byte[] file
  • @RequestPart("file") Part file
  • MultipartFile file
    @RequestMapping("/fileUpload")
    public void FileUpload(@RequestPart("file") byte[] file) {
            ...
    }
    @RequestMapping("/fileUpload")
    public void FileUpload(@RequestPart("file") Part file) throws IOException {
        file.write("D://test.jpg");
    }
    @RequestMapping("/fileUpload")
    public void FileUpload(MultipartFile file) throws IOException {
        String originalFilename = file.getOriginalFilename();
        file.transferTo(new File("D://" + originalFilename));
    }

Java开发之上帝之眼系列教程其他文章

勘误&感谢

  本系列文章资料来源很多出自于互联网和在下本身的见解,受限于个人技术能力水平和其他相关知识的限制,相关见解错误或者资料引用错误请各位帮助留言校正!引用资料多来自于互联网,在下在引用前会遵循各位前辈或者博主的引用说明表示感谢,但互联网资料多是转发再转发或存在遗漏请原作者内信联系指正。

【云栖快讯】云栖专辑 | 阿里开发者们的第20个感悟:好的工程师为人写代码,而不仅是为编译器  详情请点击

网友评论

2F
gydtep

申请阿里云服务器等产品时,可以使用1888元阿里云代金券,领取网址: https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=2a7uv47d

3F
云大使分享

阿里云新用户专享:2核8G5M带宽云服务器,3年只需¥2070
参加阿里云官方1折拼团(最低折扣只此一家)立即购买:
https://m.aliyun.com/act/team1111/#/share?params=N.EN2hxhpNQG.kzp4uq6k

4F
云计算优惠

【阿里云产品干货分享】!阿里云购买用户,需要去官网领券,以前领取的代金券要么过期的,要么不能用,这是阿里云最新领取地址:https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=28kqeewo (点击领取),顺便分享2018双十二2折购买云服务器地址:
https://m.aliyun.com/act/team1212?params=N.rn6HsxiEvn (最新活动),!阿里云服务器,虚拟主机,轻量服务器,云数据库,Web应用防火墙,对象存储OSS,态势感知SLB,负载均衡,DDoS高仿IP,安骑士,短信服务,云盾证书。。。都能使用代金券减免金额!