文件上传是指将本地(客户端)的文件通过网络传输到远程服务器的过程,是 Web 开发、客户端 / 服务端交互中最常见的功能之一。在 Java 开发场景中,通常特指浏览器(前端)或客户端程序将文件(如图片、文档、视频、压缩包等)提交到 Java 后端服务器,并由服务器接收、解析、存储(或进一步处理)的过程。
实现步骤
前端
1、必须使用表单提交
2、请求方法必须是post
3、设置表单 enctype=multipart/form-data属性
4、使用input type=file 标签,指定name属性
后端
1、使用MultipartFile类型接收文件
2、使用方法获取相应的参数
3、读取到文件后进行存储
前端代码:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户详情页面</title>
</head>
<body>
<!-- 上传 头像-->
<form action="/user/login" method="post" enctype="multipart/form-data">
<div>
上传图片:
<input type="file" name="userIcon" />
</div>
<div>
<input type="submit" value="上传头像" />
</div>
</form>
</body>
</html>
后端代码:
java
/**
* 演示文件上传操作
*/
@RestController
public class UploadFileController {
/**
* 文件上传方法
*/
@RequestMapping("/user/login")
public ResultObj uploadFile(MultipartFile userIcon) throws IOException {
String originalFilename = userIcon.getOriginalFilename();
System.out.println("originalFilename = " + originalFilename); //获取原文件名称
String name = userIcon.getName();
System.out.println("name = " + name); //表示获取表单上传 文件name值
long size = userIcon.getSize();
System.out.println("size = " + size); //获取上传文件大小
String contentType = userIcon.getContentType();
System.out.println("contentType = " + contentType); //表示上传文件类型 image/png
// InputStream is = userIcon.getInputStream(); //获取根据输入流表现显示
//把文件保存到指定目录下
userIcon.transferTo(new File("F://class118/" + originalFilename));
return ResultObj.ok();
}
}