SpringMVC使用Multipartfile上传文件

本文介绍了使用SpringMVC进行文件上传的步骤,包括引入commons-fileupload和commons-io库,设置form表单属性,配置MultipartResolver解析器,定义控制器中MultipartFile参数,指定保存路径并保存文件,以及展示已上传图片的代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要步骤:

首先需要导入两个操作所需的Jar包:

commons-fileupload-1.2.2.jar

commons-io-2.4.jar

1,在form表单设置属性:

<form action="${basePath}upload" method="post" enctype="multipart/form-data">  
    <label>头 像</label><input type="file" name="file"/><br/>  
    <input type="submit" value="提  交"/>  
</form>  

2, 配置文件里配置一个MultipartResolver解析器

 <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="utf-8" />
        <!-- 最大内存大小 -->
        <property name="maxInMemorySize" value="10240" />
        <!-- 最大文件大小,-1为不限制大小 -->
        <property name="maxUploadSize" value="-1" />

</bean>  

3,在相应的控制器设置接收参数类型为MutilpartFile:

private StringfileUpload(@RequestParam(value="file",required=false) 
MultipartFile file,HttpServletRequest request) throws Exception{ 

4,在Controller里面定义图片保存路径

 String pathRoot = request.getSession().getServletContext().getRealPath(""); 

 path="/imagies/1/"+uuid+"."+imageName;
File file2=new File(pathRoot+path);

5,将文件保存到定义的路径下

file.transferTo(file2);

controller完整代码如下:

@Controller
public class uploadController {

    @RequestMapping(value="/upload",method=RequestMethod.POST)  
    private String fildUpload(@RequestParam(value="file",required=false) MultipartFile file,
            HttpServletRequest request)throws Exception{  

        //获得物理路径webapp所在路径  
        String pathRoot = request.getSession().
        getServletContext().getRealPath(" "); 

        String path="";  
        if(!file.isEmpty()){  
            //生成uuid作为文件名称,防止直接使用名字出现重复  
            String uuid = UUID.randomUUID().toString().replaceAll("-","");  
            //获得文件类型 返回image/后缀
            String contentType=file.getContentType();          
            //获得文件后缀名称             
            String imageName=contentType.substring(contentType.indexOf("/")+1); 
            //把文件保存至本地自定义目录下:一般做法会把上传文件保存在服务器下的项               目内,但是这样的上传文件会在你项重新发布项目后消失;
             // File.separator为斜杠;
            String localpath="D:"+File.separator+"imagies"
            +File.separator+uuid+"."+imageName;

            path="/imagies/1/"+uuid+"."+imageName;
            File file2=new File(pathRoot+path);
            //把图片存进指定目录;
            file.transferTo(file2);

        }  
        request.setAttribute("path", path);  
        return "succes";  
    }  

}

显示已上传的图片代码:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path; 
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>My JSP 'succes.jsp' starting page</title>
  </head>
  <body>
   <img src="${basePath}${path}" >
   ${basePath}${path}
  </body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值