写点什么

SpringMVC-- 文件上传

作者:Java高工P7
  • 2021 年 11 月 11 日
  • 本文字数:1995 字

    阅读完需:约 7 分钟

String path=request.getSession().getServletContext().getRealPath("/uploads/");


System.out.println(path);


//判断该路径是否存在


File file=new File(path);


if(!file.exists()){


//创建文件夹


file.mkdirs();


}


//解析 request 对象,获取上传文件项


DiskFileItemFactory factory=new DiskFileItemFactory();


ServletFileUpload upload=new ServletFileUpload(factory);


//解析 request


List<FileItem> items=upload.parseRequest(request);


//遍历


for(FileItem item:items){


//进行判断,当前 item 对象是否是上传文件项


if(item.isFormField()){


//说明普通表单项


}else{


//说明上传文件项


//获取上传文件的名称


String filename=item.getName();


//把文件名称设置成唯一值,uid


String uuid=UUID.randomUUID().toString().replace("-","");


filename=uuid+"_"+filename;


//完成文件上传


item.write(new File(path,filename));


//删除临时文件


item.delete();


}


}


return "success";


}


}


SpringMVC 方式文件上传


在 springmvc.xml 中配置文件解析器


<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">


<!--设置上传文件的最大尺寸 1010241024=10485760-->


<property name="maxUploadSize" value="10485760"></property>


</bean>


jsp 页面


<h3>SpringMVC 方式文件上传</h3>


<form action="user/fileupload2" method="post" enctype="multipart/form-data">


选择文件:<input type="file" name="upload"/><br/>


<input type="submit" value="上传"/>


</form>


编写控制器


/**


  • @Author: Ly

  • @Date: 2020-09-28 11:15


*/


@Controller


@RequestMapping("


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


/user")


public class UserController {


/**


  • SpringMVC 文件上传

  • @return


*/


@RequestMapping("/fileupload2")


public String fileupload2(HttpServletRequest request, MultipartFile upload) throws Exception {


System.out.println("springMVC 文件上传");


//使用 fileupload 组件完成文件上传


String path=request.getSession().getServletContext().getRealPath("/uploads/");


System.out.println(path);


//判断该路径是否存在


File file=new File(path);


if(!file.exists()){


//创建文件夹


file.mkdirs();


}


//获取上传文件的名称


String filename=upload.getOriginalFilename();


//把文件名称设置成唯一值,uid


String uuid=UUID.randomUUID().toString().replace("-","");


filename=uuid+"_"+filename;


//完成文件上传


upload.transferTo(new File(path,filename));


return "success";


}


}


springmvc 跨服务器方式的文件上传


分服务器的目的:在实际开发中,我们会有很多处理不同功能的服务器。分服务器处理可以让服务器各司其职,从而提高我们项目的运行效率。



不同类型的服务器


  • 应用服务器:负责部署我们的应用

  • 数据库服务器:运行我们的数据库

  • 缓存和消息服务器:负责处理大并发访问的缓存和消息

  • 文件服务器:负责存储用户上传文件的服务器。


代码实现


添加 sun 公司提供的跨服务器的相关依赖


<dependency>


<groupId>com.sun.jersey</groupId>


<artifactId>jersey-core</artifactId>


<version>1.18.1</version>


</dependency>


<dependency>


<groupId>com.sun.jersey</groupId>


<artifactId>jersey-client</artifactId>


<version>1.18.1</version>


</dependency>


准备两个 tomcat 服务器,并创建一个用于存放图片的 web 工程,在文件服务器的 tomcat 配置中加入,允许读写操作。


文件位置:



加入内容:接收文件的目标服务器可以支持写入操作



编写 jsp 页面


<form action="fileUpload2" method="post" enctype="multipart/form-data">


名称:<input type="text" name="picname"/><br/>


图片:<input type="file" name="uploadFile"/><br/>


<input type="submit" value="上传"/>


</form>


在 springmvc.xml 中配置文件解析器


<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">


<!--设置上传文件的最大尺寸 1010241024=10485760-->


<property name="maxUploadSize" value="10485760"></property>


</bean>


编写控制器实现上传图片


@Controller


@RequestMapping("/user")


public class UserController {


/**


  • 跨服务器文件上传

  • @return


*/


@RequestMapping("/fileupload3")


public String fileuoload3(MultipartFile upload) throws Exception {


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();

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
SpringMVC--文件上传