一、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 "";
}
}
五、页面样式
六、返回值