SpringMvc -上传文件

本文介绍了如何使用SpringMvc实现文件上传功能,涉及了依赖引入、MultipartResolver配置、Controller编写及JSP页面设计。同时,强调了enctype属性的重要性以及在实际项目中如何应用,如生成唯一文件名来存储上传的语音、视频和图片。

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

第一次做项目,做一个app的后台管理系统,这两天遇到了后台要上传选手信息,因此自己对整个上传文件的功能做了了解,并且记录下学习的过程;

1、上传文件功能需要用到两个包:commons-fileupload(文件上传)和commons-io(io)
在pox.xml导入两个依赖包:
这里写图片描述

2、spring-mvc配置文件中配置MultipartResolver处理器,并可在此加入对上传文件的属性限制 ,或者异常信息,我这里只配置了处理器和上传文件的限制:
这里写图片描述

3、编写了controller类进行测试了下

package com.ykw.springmvc.controller;

import java.io.File;
import java.io.IOException;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

@Controller
@RequestMapping("upload")
public class UploadController {

    /**
     * 上传单个文件
     * @param file
     * @param desc
     * @return
     * @throws IllegalStateException
     * @throws IOException
     */
    @RequestMapping(value = "/one")
    public String upload(@RequestParam("file") MultipartFile file , @RequestParam("desc") String desc) throws IllegalStateException, IOException{
           //可以将文件转存到d盘目录
          System.out.println("文件名称:"+file.getOriginalFilename());
          file.transferTo(new File("d:\\"+file.getOriginalFilename()));
          return "success";

    }
    /**
     * 上传多个文件,用数组接收
     * @return
     */
    @RequestMapping(value ="/many")
    public String upload2(@RequestParam MultipartFile[] files , @RequestParam("desc") String desc){
        for(MultipartFile file :files){     
            System.out.println("文件名称:"+file.getOriginalFilename());
            System.out.println("文件尺寸:"+file.getSize());
        }
        System.out.println(desc);

        return "success";
    }

}

4、编写jsp页面进行上传文件
这里写图片描述
这里要注意enctype要指定,查询html form标签:
这里写图片描述

没有指定出现的情况:
这里写图片描述

5、测试结果:
这里写图片描述

测试了效果后,在项目中应用效果(上传选手语音、视频、图片):
这里用到了UUID生成全球唯一ID作为文件名称

@RequestMapping(value = "audienceadd")
    public String addaudience(HttpServletRequest request,
            @RequestParam("voice") MultipartFile voice,
            @RequestParam("video") MultipartFile video,
            @RequestParam("image") MultipartFile image) throws IllegalStateException, IOException {
        Audience audience = new Audience();
        audience.setOrderId(Integer.parseInt(request.getParameter("orderId")));
        audience.setContent(request.getParameter("content"));
        audience.setTelephone(request.getParameter("telephone"));
        audience.setName(request.getParameter("name"));
        String originalFilename = null;
        String path = null;
        /**
         * 判断语音文件,将文件存入路径后,把路径赋值给数据库
         */
        originalFilename = voice.getOriginalFilename();
        if (voice != null && originalFilename != null
                && originalFilename.length() > 0) {
            path = "F:\\1\\";
            String newFileName=UUID.randomUUID()+originalFilename.substring(originalFilename.lastIndexOf("."));
            File newFile = new File(path+newFileName);
            voice.transferTo(newFile);
            audience.setYuying(newFileName);
        } else {
            audience.setYuying("");
        }
        /**
         * 判断视频文件,将文件存入路径后,把路径赋值给数据库
         */
        originalFilename = video.getOriginalFilename();
        if (video != null && originalFilename != null
                && originalFilename.length() > 0) {
            path = "F:\\1\\";
            String newFileName=UUID.randomUUID()+originalFilename.substring(originalFilename.lastIndexOf("."));
            File newFile = new File(path+newFileName);
            video.transferTo(newFile);
            audience.setShiping(newFileName);
        } else {
            audience.setShiping("");
        }
        /**
         * 判断图片文件,将文件存入路径后,把路径赋值给数据库
         */
        originalFilename = image.getOriginalFilename();
        if (image != null && originalFilename != null
                && originalFilename.length() > 0) {
            path = "F:\\1\\";
            String newFileName=UUID.randomUUID()+originalFilename.substring(originalFilename.lastIndexOf("."));
            File newFile = new File(path+newFileName);
            image.transferTo(newFile);
            audience.setPicture(newFileName);
        } else {
            audience.setPicture("");
        }

        audienceSvc.addAudience(audience);
        return "redirect:audiencelist.action";
    }

管理系统页面展现结果:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值