基于springmvc实现文件上传

1.导入jar包

2.修改配置类

在springmvc.xml添加bean

 <!-- 配置文件上传处理器 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置在内存中允许的最大文件大小,超过此大小的文件将被写入磁盘 -->
        <property name="maxInMemorySize" value="500000"></property>
        <!-- 设置默认的文件编码,以支持多语言文件名和文件内容 -->
        <property name="defaultEncoding" value="UTF-8"></property>
    </bean>

3.设置路径

Tomcat安装目录中的webapps中新建文件夹upload,用于存放本地文件

4.修改Tomcat

打开IDEA


5.修改controller

这里以新增为例

/**
     * 处理条目插入请求
     * 该方法用于将用户提交的条目和相关文件插入到系统中
     */
    @RequestMapping("/EntryInsertServlet")
    public String doInsert(Model model,
                           Entry entry,
                           @RequestParam(value = "myFile", required = false) MultipartFile[] multipartFiles) {
        String picpath = "";
        // 遍历上传的文件
        for (MultipartFile multipartFile : multipartFiles) {
            String fileName = multipartFile.getOriginalFilename();
            // 检查文件名是否为空
            if (fileName != null && !fileName.equals("")) {
                try {
                    // 获取并设置上传文件的保存路径
                    String path = System.getProperty("user.dir").replace("bin", "webapps") + "/upload/";
                    // 为上传的文件生成唯一的文件名,防止重名
                    fileName = System.currentTimeMillis() + "_" + multipartFile.getOriginalFilename();
                    File file = new File(path, fileName);
                    // 将文件保存到服务器
                    multipartFile.transferTo(file);
                    // 记录文件名,用于后续操作
                    picpath += fileName + ",";
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        // 设置条目的图片路径
        entry.setPicpath(picpath);
        // 调用业务逻辑插入条目
        int insert = entryServlet.insert(entry);
        // 根据插入结果添加消息到模型,以便在页面上显示
        model.addAttribute("msg", insert > 0 ? "增加成功" : "增加失败");
        // 重定向到条目列表页面
        return "redirect:EntryListServlet";
    }

JSP页面的代码示例

显示:通过c:forTokens 将值按照 ','分割,名称为pic,在img的src添加/upload/然后拼接${pic}

插入:请求改成postentype改成“multipart/form-data

<form action="EntryInsertServlet" method="post"enctype="multipart/form-data">
 <table border="1px" align="center">
            <tr>
                <td>图片上传</td>
                <td><input type="file" name="myFile"></td>
            </tr>
            <tr>
                <td>图片上传</td>
                <td><input type="file" name="myFile"></td>
            </tr>
            <tr>
                <td>图片上传</td>
                <td><input type="file" name="myFile"></td>
            </tr>
            <tr>
                <td colspan="2" style="text-align: center">
                    <input type="submit" value="提交">
                    <input type="button" value="返回" onclick="fh()">
                </td>
            </tr>
        </table>
<form/>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值