SpringMVC实现文件上传
文件上传的必要前提
文件上传原理
第三方组件实现文件上传
传统文件上传方式
1.导入依赖
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
2.前端代码
<form action="user/fileUpLoad1" method="post" enctype="multipart/form-data">
选择文件:<input type="file" value="选择文件" name="upload"><br>
<input type="submit" value="上传">
</form>
3.后端代码
@RequestMapping("/fileUpLoad1")
public String fileUpLoad1(HttpServletRequest request) throws Exception{
System.out.println("文件上传");
//使用fileupload组件完成文件上传
String path = request.getSession().getServletContext().getRealPath("/uploads/");
//判断该路径是否存在
File file = new File(path);
if(!file.exists()){
file.mkdirs();
}
//解析request文件,获取上传文件项
DiskFileItemFactory factory = new DiskFileItemFactory(); //磁盘文件工厂对象:用于创建磁盘文件对象
ServletFileUpload upload = new ServletFileUpload(factory); //利用工厂,加载上传文件,创建磁盘文件对象
//解析request
List<FileItem> fileItems = upload.parseRequest(request);
for(FileItem item : fileItems){
//拿到每一个文件对象
//进行判断,当前item是否为上传文件项,也可能是上传表单项(如username=xx)
if(item.isFormField()){ //普通表单项
}else{ //上传文件项
String fileName = item.getName();
//把文件名称设置为唯一值
fileName = UUID.randomUUID().toString().replace("-","")+"_"+fileName;
item.write(new File(path,fileName));
System.out.println(path+fileName);
//删除临时文件
item.delete();
}
}
return "success";
}
SpringMVC上传文件
1.SpringMVC中配置文件解析器
<!--配置文件解析器对象,id不能更改必须为此-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10485760"></property> <!--最大上传文件大小,单位:字节-->
</bean>
2.后端代码
@RequestMapping("/fileUpLoad2")
public String fileUpLoad2(HttpServletRequest request,MultipartFile upload) throws Exception{
System.out.println("SpringMVC上传");
File file = new File(request.getSession().getServletContext().getRealPath("/uploads/"));
if(!file.exists()) file.mkdirs();
System.out.println(file.getPath());
//获取文件名称
String fileName = upload.getOriginalFilename();
//变为唯一值
fileName = UUID.randomUUID().toString().replace("-","")+"_"+fileName;
//上传文件
upload.transferTo(new File(file,fileName));
return "success";
}
``
分类:
SpringMVC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)