SSM实现文件上传

目录

SSM实现文件上传

1、修改from表单请求方式改为post,添加属性

2、修改springmvc配置文件,添加一下配置

3、后端方法


SSM实现文件上传

1、修改from表单请求方式改为post,添加属性:

enctype="multipart/form-data"

2、修改springmvc配置文件,添加一下配置

<!-- 配置MultipartResolver,用于上传文件,使用spring的CommonsMultipartResolver -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="5000000"/>
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>

3、后端方法:

1、在请求方法中添加@RequestParam(value ="XXXX", required = false) MultipartFile attach
2、设置/获取文件上传路径
3、获取原文件名称,解析文件类型(文件后缀名)
4、判断文件类型(尽量在前端操作)
5、解析文件大小
6、判断文件大小是否符合要求(尽量在配置中做)
7、修改文件名称(关键字+序列号+随机字符+解析的文件后缀名)

例如:KD38_202302011509_sadflkfh.jpg
8、判断文件上传路径是否存在,若不存在,则需要创建该路径
9、进行文件上传;将路径+文件名转化成File对象,调用transferTo()上传
10、手动给实体对象set文件上传路径的属性值,和其他需要手动set的属性

@PostMapping("/save.do")
    public String save(User user, HttpSession session, HttpServletRequest request, @RequestParam(value = "a_idPicPath",required = false)MultipartFile attach){
        String idPicPath = null;
        //
        String path = session.getServletContext().getRealPath("statics" + File.separator + "upload");
        System.out.println("文件上传路径:" + path);
        //
        String oldName = attach.getOriginalFilename();
        //
        String suffix = oldName.substring(oldName.lastIndexOf("."));
        System.out.println("上传的文件类型为:" + suffix);
        //
        long size = attach.getSize();
        if (size > 500 * 1024){
            request.setAttribute("error","文件过大");
            return "useradd";
        }else if (suffix.equalsIgnoreCase(".jpg") || suffix.equalsIgnoreCase(".png")){
            //
            String newName = System.currentTimeMillis() + RandomUtils.nextInt(0, 1000000) + suffix;
            File file = new File(path,newName);
            //不存在创建
            if (!file.exists()){
                file.mkdirs();
            }
            try {
                //把文件写入磁盘
                attach.transferTo(file);
            }catch (Exception e){
                e.printStackTrace();
                request.setAttribute("error","文件上传失败!");
                return "useradd";
            }
            idPicPath = path +File.separator+ newName;
        }else {
            request.setAttribute("error","不支持上传该类型文件!");
            return "useradd";
        }
        user.setIdPicPath(idPicPath);
        user.setCreatedBy(((User)session.getAttribute(Constants.USER_SESSION)).getId());

        if(userService.add(user)){
            return "redirect:list.do";
        }else{
            return "useradd";
        }
    }

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSM(Spring + SpringMVC + MyBatis)是一种常用的Java Web开发框架组合,下面是一个基本的SSM实现文件上传的示例: 1. 首先,在Spring配置文件中添加以下配置: ``` <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="5242880"/> <!-- 设置最大上传文件大小 --> </bean> ``` 2. 在Controller中添加处理文件上传的方法: ```java @RequestMapping(value = "/upload", method = RequestMethod.POST) public String uploadFile(@RequestParam("file") MultipartFile file) { if (!file.isEmpty()) { try { // 获取文件名 String fileName = file.getOriginalFilename(); // 设置文件存储路径 String filePath = "C:/uploads/" + fileName; // 创建文件对象 File dest = new File(filePath); // 检查目标目录是否存在,不存在则创建 if (!dest.getParentFile().exists()) { dest.getParentFile().mkdirs(); } // 将文件写入目标目录 file.transferTo(dest); return "upload success"; } catch (IOException e) { e.printStackTrace(); return "upload failed"; } } else { return "file is empty"; } } ``` 3. 在前端页面中添加上传文件的表单: ```html <form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="Upload" /> </form> ``` 当用户选择文件并提交表单时,控制器方法会接收文件并将其保存到指定的目录中。请确保文件上传目录存在并有足够的权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值