客服端上传文件给服务端:
1.上传原理
2.客户端上传文件给服务端,服务端保存客户端传来的文件步骤:
① 导入fileupload和io坐标
② 配置文件上传解析器
③ 编写文件上传代码
代码还是用上一篇的:
https://blog.csdn.net/GLOAL_COOK/article/details/112852352
用到的代码:
下面分为单文件上传保存和多文件,都差不多的:
1.在pom.xml导入坐标:
<!--文件上传要的-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.3</version>
</dependency>
2.配置文件上传解析器
在springmvc-xml配置:(注意这里是UYF-8)
<!--配置文件上传解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UYF-8"/> <!--这里注意是UYL-->
<property name="maxUploadSize" value="500000"/> <!--5M-->
</bean>
QuickController :
package cn.itcast.controller;
import cn.itcast.domain.User;
import cn.itcast.domain.VO;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* @author QLBF
* @version 1.0
* @date 2021/1/17 21:10
*/
@Controller
@RequestMapping("/user") //一级访问目录
public class QuickController {
//下面演示获取请求数据--获取客服端发来的单文件
@RequestMapping(value = "/quick22")
@ResponseBody
//下面参数名得跟文件表单提交过来一致才行,上一篇博客也有讲
public void save22(String username, MultipartFile uploadFile) throws Exception {
System.out.println(username);
System.out.println(uploadFile);
//获得上传文件的名称
String originalFilename = uploadFile.getOriginalFilename();
uploadFile.transferTo(new File("F:\\uploadfiles\\"+originalFilename)); //服务器进行保存客服端上传的文件
}
//下面演示获取请求数据--获取客服端发来的多文件,跟单一样,只不过用数组来接收而已
@RequestMapping(value = "/quick23")
@ResponseBody
//下面参数名得跟文件表单提交过来一致才行,上一篇博客也有讲
public void save23(String username, MultipartFile[] uploadFile) throws Exception {
System.out.println(username);
for (MultipartFile multipartFile : uploadFile) {
String originalFilename = multipartFile.getOriginalFilename();
multipartFile.transferTo(new File("F:\\uploadfiles\\"+originalFilename)); //服务器进行保存客服端上传的文件
}
}
}
2.1单文件
在webapp新建uploadsinglefile.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page isELIgnored="false"%>
<html>
<head>
<title>单文件上传</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/user/quick22" method="post" enctype="multipart/form-data">
名称 <input type="text" name="username"><br>
文件 <input type="file" name="uploadFile"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
服务器代码quick22见上
浏览器输入http://localhost:8080/uploadsinglefile.jsp
控制台输出:
文件保存到服务器的盘里了:
下面看看
2.2.多文件上传和服务器保存:
uploadmanyfile.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page isELIgnored="false"%>
<html>
<head>
<title>单文件上传</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/user/quick23" method="post" enctype="multipart/form-data">
名称 <input type="text" name="username"><br>
文件1 <input type="file" name="uploadFile"><br>
文件2 <input type="file" name="uploadFile"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
服务器代码quick23见上
控制台:
文件也保存到服务器盘里: