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配置文件解析器

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

相关文章

  • java根据扩展名获取系统图标和文件图标示例

    java根据扩展名获取系统图标和文件图标示例

    这篇文章主要介绍了java根据扩展名获取系统图标和文件图标示例,需要的朋友可以参考下
    2014-03-03
  • SpringBoot使用Redis对用户IP进行接口限流的项目实践

    SpringBoot使用Redis对用户IP进行接口限流的项目实践

    本文主要介绍了SpringBoot使用Redis对用户IP进行接口限流,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Java8中接口的新特性测试

    Java8中接口的新特性测试

    今天小编就为大家分享一篇关于Java8中接口的新特性测试,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 实现一个基于Servlet的hello world程序详解步骤

    实现一个基于Servlet的hello world程序详解步骤

    Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层
    2022-02-02
  • java控制台实现可视化日历小程序

    java控制台实现可视化日历小程序

    这篇文章主要为大家详细介绍了java控制台实现可视化日历小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • 基于SpringBoot实现自动装配返回属性的设计思路

    基于SpringBoot实现自动装配返回属性的设计思路

    这篇文章主要介绍了基于SpringBoot实现自动装配返回属性,这里涉及到的技术知识点有注解解析器,为什么用ResponseBodyAdvice这里解析?不在Filter,Interceptors,本文结合示例代码给大家介绍的非常详细,需要的朋友参考下吧
    2022-03-03
  • mybatis foreach批量插入数据:Oracle与MySQL区别介绍

    mybatis foreach批量插入数据:Oracle与MySQL区别介绍

    这篇文章主要介绍了,需要的朋友可以参考下
    2018-01-01
  • Scala中优雅的处理Null问题

    Scala中优雅的处理Null问题

    Spark 采用混合方式,大部分情况下使用 Option,但个别时候出于性能原因才使用了null。一个很好的习惯是当有方法返回值可能为null的时候,使用Option来代替,本文给大家介绍Scala处理Null的知识详解,一起看看吧
    2021-08-08
  • WebSocket实现Web聊天室功能

    WebSocket实现Web聊天室功能

    这篇文章主要为大家详细介绍了WebSocket实现Web聊天室功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Spring-boot原理及spring-boot-starter实例和代码

    Spring-boot原理及spring-boot-starter实例和代码

    spring-boot的starter是一个通过maven完成自包含并通过annotation配置使得可被spring上下文发现并实例化的一个可插拔的组件或服务。这篇文章主要介绍了Spring-boot原理及spring-boot-starter实例和代码 ,需要的朋友可以参考下
    2019-06-06

最新评论