Spring MVC 文件上传

本文详细介绍了如何在SpringMVC中实现文件上传,包括设置表单属性、使用commons-fileupload库以及处理上传文件的方法。首先,通过修改表单enctype属性和设置POST请求来支持文件上传。接着,导入所需依赖并创建上传路径,检查目录存在性。然后,使用ServletFileUpload解析请求,遍历文件项,区分普通字段与文件,并将文件保存到指定位置。最后,展示了SpringMVC环境下简化版的文件上传,利用MultipartFile接口直接上传文件。整个过程清晰地展示了文件上传的完整流程。

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

前提工作

  1. form表单添加属性。enctype = enctype="multipart/form-data"
  2. 将表单提交方式改成post请求
  3. 给表单下通过<input>标签添加一项文件上传框
  4. 导包
    1. commons-io.2.4
    2. commons-fileupload.1.3.1
<!--    文件上传  -->
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>

传统文件上传

  1. 获取要上传的位置
  2. 判断文件目录是否存在。
  3. 解析request对象。获取上传文件项
  4. 解析request
  5. 判断是普通项还是文件项
    如果是文件项
    1. 获取文件名字
    2. 通过上传的名字,加载到需要上传的位置
    3. 关闭临时文件
@RequestMapping(value = "/testFile")
    public String testFile(HttpServletRequest request){

        // 1. 上传的位置
        String path = request.getSession().getServletContext().getRealPath("/uploads/");
        // 2. 判断文件目录是否存在。第一次运行
        File file = new File(path);
        if(!file.exists()){
            // 如果不存在就创建
            file.mkdir();
        }
        // 3. 解析request对象。获取上传文件项
        DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
        ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);

        try {
            // 4. 解析request
            List<FileItem> list = servletFileUpload.parseRequest(request);
            // 5. 遍历
            for(FileItem i : list){
                // 6.判断是普通项还是文件项
                if(i.isFormField()){
                	// 通过打印该列的值。测试
                    System.out.println(i.getString("UTF-8"));
                }else{
                    // 7. 得到文件名字
                    String filename = i.getName();
                    // 8. 开始上传
                    i.write(new File(path,filename));
                    // 9. 关闭临时文件
                    i.delete();
                }
            }
        } catch (FileUploadException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "success";
    }

Spring MVC 文件上传

转载黑马图片

  1. 配置文件解析器
    注意事项:
    bean对象的id属性值必须是multipartResolver
  2. 获取要上传的位置
  3. 判断文件目录是否存在
  4. 根据文件名,上传到指定位置
	@RequestMapping(value = "/testFileload")
    public String testFileload(HttpServletRequest request, MultipartFile upload) throws IOException {

        // 1. 上传的位置
        String path = request.getSession().getServletContext().getRealPath("/uploads/");
        // 2. 判断文件目录是否存在。第一次运行
        File file = new File(path);
        if(!file.exists()){
            // 如果不存在就创建
            file.mkdir();
        }
        // 7. 得到文件名字
        String filename = upload.getOriginalFilename();
        // 8. 开始上传
        upload.transferTo(new File(path,filename));

        return "success";
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值