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

作者:jock_javaEE 时间:2021-09-03 00:24:25 

一、文件上传的必要前提

  • A form 表单的 enctype 取值必须是:multipart/form-data(默认值是:application/x-www-form-urlencoded) enctype:是表单请求正文的类型

  • B method 属性取值必须是 Post

  • C 提供一个文件选择域 input type=file

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

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

三、


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

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

来源:https://www.cnblogs.com/jock766/p/13290111.html

标签:Spring,MVC,文件,上传
0
投稿

猜你喜欢

  • 利用javaFX实现移动一个小球的示例代码

    2022-06-18 19:04:51
  • Java实现学生成绩输出到磁盘文件的方法详解

    2021-11-08 05:24:51
  • 详解android使用ItemDecoration 悬浮导航栏效果

    2022-05-07 18:17:09
  • Java C++题解leetcode字符串轮转KMP算法详解

    2023-05-30 11:28:49
  • java实现ArrayList根据存储对象排序功能示例

    2022-01-24 01:06:05
  • 快速理解Java垃圾回收和jvm中的stw

    2021-09-06 20:27:17
  • Mybatis如何使用ognl表达式实现动态sql

    2021-06-22 03:34:49
  • .NET实现父窗体关闭而不影响子窗体的方法

    2022-10-06 20:56:04
  • 用SpringBoot+Vue+uniapp小程序实现在线房屋装修管理系统

    2023-11-12 04:10:48
  • C#泛型约束的深入理解

    2023-02-21 09:32:19
  • Java如何实现压缩文件与解压缩zip文件

    2022-01-28 09:14:00
  • 详解ArrayList的扩容机制

    2022-06-18 05:56:32
  • Android 之BottomsheetDialogFragment仿抖音评论底部弹出对话框效果(实例代码)

    2023-08-06 01:01:56
  • Android 仿苹果IOS6开关按钮

    2023-11-21 15:16:08
  • SpringBoot整合JDBC、Druid数据源的示例代码

    2022-06-19 20:44:24
  • mybatis中<choose>标签的用法说明

    2023-07-22 19:37:27
  • 如何更改Dialog的标题与按钮颜色详解

    2023-06-01 23:54:54
  • Java项目开发中实现分页的三种方式总结

    2021-08-25 21:36:36
  • android 权限大全 分享

    2023-03-30 18:06:22
  • c#文档图片自动纠偏

    2022-08-07 13:45:39
  • asp之家 软件编程 m.aspxhome.com