SpringMVC文件上传原理及实现过程解析

 更新时间:2020年07月15日 08:58:27   作者:jock_javaEE  
这篇文章主要介绍了SpringMVC文件上传原理及实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一、文件上传的必要前提

  • A form 表单的 enctype 取值必须是:multipart/form-data(默认值是:application/x-www-form-urlencoded) enctype:是表单请求正文的类型
  • B method 属性取值必须是 Post
  • C 提供一个文件选择域 input type=file

二、借助第三方组件实现文件上传

三、

/**
 * springmvc跨服务器上传文件
 * @return
 */
@RequestMapping("/testFileUpload1")
public String testFileUpload1(MultipartFile upload) throws IOException {
  System.out.println("跨服务器文件上传...");

  // 定义上传文件服务器路径
  String path = "http://localhost:9090/uploads/";

  // 说明上传文件项
  // 获取上传文件的名称
  String filename = upload.getOriginalFilename();
  // 把文件的名称设置唯一值,uuid
  String uuid = UUID.randomUUID().toString().replace("-", "");
  filename = uuid+"_"+filename;

  // 创建客户端的对象
  Client client = Client.create();
  // 和图片服务器进行连接
  WebResource webResource = client.resource(path + filename);
  // 上传文件
  webResource.put(upload.getBytes());
  return "success";
}




/**
 *
 * 这里的upload必须与index.jsp的upload一致
 *
 * springmvc文件上传
 * @return
 */
@RequestMapping("/testFileUpload")
public String testFileUpload(HttpServletRequest request, MultipartFile upload) throws IOException {
  // 使用fileupload组件完成文件上传
  // 上传的位置(获取上传到服务器上的文件路径)
  String path = request.getSession().getServletContext().getRealPath("/uploads/");
  // 判断,该路径是否存在
  File file = new File(path);
  if(!file.exists()){
    file.mkdir();
  }
  // 说明上传文件项
  // 获取上传文件的名称
  String filename = upload.getOriginalFilename();
  // 把文件的名称设置唯一值,uuid
  String uuid = UUID.randomUUID().toString().replace("-", "");
  filename = uuid+"_"+filename;
  // 完成文件上传
  upload.transferTo(new File(path,filename));
  return "success";
}

四、在springmvc.xml配置文件解析器

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Spring Security6配置方法(废弃WebSecurityConfigurerAdapter)

    Spring Security6配置方法(废弃WebSecurityConfigurerAdapter)

    本文主要介绍了Spring Security6配置方法(废弃WebSecurityConfigurerAdapter),就像文章标题所说的,SpringSecurity已经废弃了继承WebSecurityConfigurerAdapter的配置方式,下面就来详细的介绍一下,感兴趣的可以了解一下
    2023-12-12
  • RabbitMq报错reply-code=406 reply-text=PRECONDITION_FAILED解决

    RabbitMq报错reply-code=406 reply-text=PRECONDITION_FAILED

    这篇文章主要为大家介绍了RabbitMq报错reply-code=406 reply-text=PRECONDITION_FAILED分析解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Java Feign微服务接口调用方法详细讲解

    Java Feign微服务接口调用方法详细讲解

    现如今微服务架构十分流行,而采用微服务构建系统也会带来更清晰的业务划分和可扩展性。java如果使用微服务就离不开springcloud,我这里是把服务注册到nacos上,各个服务之间的调用使用feign
    2023-01-01
  • idea替换快捷键,批量处理对象的操作

    idea替换快捷键,批量处理对象的操作

    这篇文章主要介绍了idea替换快捷键,批量处理对象的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • java 正则表达式获取两个字符中间的字符串方法

    java 正则表达式获取两个字符中间的字符串方法

    今天小编就为大家分享一篇java 正则表达式获取两个字符中间的字符串方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • IDEA让包分层显示的实现方式

    IDEA让包分层显示的实现方式

    这篇文章主要介绍了IDEA让包分层显示的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • java 数据库连接与增删改查操作实例详解

    java 数据库连接与增删改查操作实例详解

    这篇文章主要介绍了java 数据库连接与增删改查操作,结合实例形式详细分析了java使用jdbc进行数据库连接及增删改查等相关操作实现技巧与注意事项,需要的朋友可以参考下
    2019-11-11
  • Java 反射机制原理与用法详解

    Java 反射机制原理与用法详解

    这篇文章主要介绍了Java 反射机制原理与用法,结合实例形式详细分析了Java反射机制的相关概念、原理、基本使用方法及操作注意事项,需要的朋友可以参考下
    2019-11-11
  • idea项目报错缺失maven依赖问题及解决

    idea项目报错缺失maven依赖问题及解决

    这篇文章主要介绍了idea项目报错缺失maven依赖问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • Mybatis Update操作返回值问题

    Mybatis Update操作返回值问题

    在获取update操作的返回值时遇到了一个问题,似乎 Mybatis 进行 update 操作得到的 int 返回值并不是影响的行数,下面通过本文给大家分享Mybatis Update操作返回值问题,需要的朋友参考下吧
    2017-09-09

最新评论