一、在pom中添加
GAV为
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
1、0配置文件的情况
在SpringWebMvcCtx中添加
设置文件字符码和最大上传大小
/**
* 文件上传最大大小
* @return
*/
@Bean
public CommonsMultipartResolver commonsMultipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setDefaultEncoding("UTF-8");
multipartResolver.setMaxUploadSize(52428800);
return multipartResolver;
}
2、有配置文件的情况
添加配置文件springmvc-servlet_09_misc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 文件上传 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为50MB -->
<property name="maxUploadSize">
<value>52428800</value>
</property>
<!-- 设置编码方式 -->
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
</bean>
</beans>
二、上传文件Controller
package edu.uc.ui.ctrl35a;
import com.liuvei.common.IOFun;
import edu.util.RspResult;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@Controller
@RequestMapping(UIConst.AREAPATH)
public class DemoUpController extends BaseController {
@RequestMapping("/DemoUp")
@ResponseBody
public List<RspResult> up(@RequestParam(value = "upload", required = false) List<MultipartFile> mutiFileList, HttpServletRequest request) throws IOException {
handleBase(request, null);//处理area相关变量
List<RspResult> list = new ArrayList<>();
RspResult result = null;
if (mutiFileList != null) {
String dirFile = null;
for (MultipartFile mutiFile : mutiFileList) {
result = new RspResult();
list.add(result);
java.io.InputStream fis = mutiFile.getInputStream();
dirFile = getDirRoot(request) + "\\" + mutiFile.getOriginalFilename();
java.io.FileOutputStream fos = new java.io.FileOutputStream(dirFile);
if (IOFun.saveStream(fis, fos)) {
result.resetOk();
result.setInfoA(dirFile);
}
/*
// saveStream(fis,os) 原生代码
byte[] buffer = new byte[1024];
int length = fis.read(buffer);
while (length > 0) {
//每次写入length长度的内容
fos.write(buffer, 0, length);
length = fis.read(buffer);
}
fis.close();
fos.flush();
fos.close();
result.resetOk();
*/
}
}
return list;
}
}
三、下载文件Controller
package edu.uc.ui.ctrl35a;
import com.liuvei.common.IOFun;
import edu.util.RspResult;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Controller
@RequestMapping(UIConst.AREAPATH)
public class DemoDownController extends BaseController {
@RequestMapping("/DemoDown")
@ResponseBody
public RspResult down(String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException {
handleBase(request, null);//处理area相关变量
RspResult result = new RspResult();
String path = getDirRoot(request);
java.io.File file = new java.io.File(path + "\\" + fileName);
if (file.exists()) {
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName);
java.io.FileInputStream fis = null;
java.io.FileOutputStream bis = null;
fis = new java.io.FileInputStream(file);
java.io.OutputStream os = response.getOutputStream();
/*
// saveStream(fis,os) 原生代码
byte[] buffer = new byte[1024];
int length = fis.read(buffer);
while (length > 0) {
//每次写入length长度的内容
fos.write(buffer, 0, length);
length = fis.read(buffer);
}
fis.close();
fos.flush();
fos.close();
result.resetOk();
*/
if (IOFun.saveStream(fis, os)) {
result.resetOk();
}
}
return null;
}
}
四、下载文件jspDomo
<%@ taglib prefix="C" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2019/11/24 0024
Time: 11:18
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>test04【下载】</title>
</head>
<body>
<%
java.io.File file = new java.io.File(application.getRealPath("up"));
String[] listFile = file.list();
request.setAttribute("list", listFile);
%>
<C:forEach var="item" items="${list}">
<a href="${pageContext.request.contextPath}/${areaName}/DemoDown?fileName=${item}">${item}</a>
<br/>
</C:forEach>
</body>
</html>