springMVC多文件上传MultipartFile

一、pom文件引入jar包

        <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>

二、spring配置

<!-- 文件上传配置 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="defaultEncoding" value="utf-8"></property>
		<!--maxUploadSize单位为字节(b) 10485760000 b=1024*10240000 即10240000 kb 一张高清摄影图约为1000 kb -->
		<property name="maxUploadSize" value="10485760000"></property>
		<property name="maxInMemorySize" value="40960"></property>
	</bean>

三、前端

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<h2>多文件上传</h2>
<form action="<%=request.getContextPath()%>/uploadFile" method="post"  enctype="multipart/form-data">
    <p>选择文件:<input type="file" name="images" multiple="multiple" ></p>
    <p><input type="submit" value="提交"></p>
</form>
</body>
</html>

四、后端

package com.jftt.jz.action.api;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.List;
import java.util.UUID;

/**
 * @param
 * @author ShiYafen
 * @description TODO
 * @return
 * @date
 */
@Controller
public class TestController {
    private static Logger logger = LogManager.getLogger(TestController.class);
/**
     * 接收文件上传请求
     * @param images
     * @return
     */
    @RequestMapping("/uploadFile")
    public String uploadFile(@RequestParam("images")List<MultipartFile> images){
        String url ="";
        StringBuilder sb=new StringBuilder();
        //对上传图像进行解析操作
        if(images ==null || images.size()==0){
            logger.info("上传文件不可为空!");
            return "";
        }else {
            //上传文件的保存地址目录
            String dirPath = "E://" ;
            if(dirPath!=null && !"".equals(dirPath.trim())) {
                for (MultipartFile image : images) {
                    url = uploadFile(image, dirPath);
                    sb.append(url).append(";");
                }
                String sbStr = sb.toString();
                return sbStr;
            }else{
                logger.info("文件存储路径为空,请检查配置文件");
                return "";
            }
        }
    }

    /**
     * 文件上传
     * @param image
     * @param basePath
     * @return String
     */
    public static String uploadFile(MultipartFile image,String basePath) {
        //对上传图像进行解析操作
        if (image != null) {
            //获取上传文件的原始名称
            String originalFilename = image.getOriginalFilename();
            //设置上传文件的保存地址目录
            File file = new File(basePath);
            //如果保存文件的地址不存在,就先创建目录
            if (!file.exists()) {
                file.mkdirs();
            }
            //使用UUID重新命名上传的文件名称(看公司需求,也可以用日期时间)
            String newFilename = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf("."));
            try {
                //使用MultipartFile接口的方法完成文件上传到指定位置
                image.transferTo(new File(basePath + newFilename));
                logger.info("文件成功存储至:{}", basePath + newFilename);
                //文件上传成功后,需要将文件存放路径存入数据库中
                return basePath + newFilename;
            } catch (Exception e) {
                logger.entry("文件上传异常:{}",e);
                e.printStackTrace();
            }
        }
        return "";
    }

}

五、页面样式


六、返回值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值