SpringBoot实现单文件上传

一、在springBoot项目中的pom.xml添加依赖。

XML 复制代码
 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
 </dependency>

二、在资源目录下的static目录下中创建一个upload.html的表单文件:

文件的内容如下:

html 复制代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图片上传页面</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="uploadFile" value="请选择文件">
<input type="submit" value="上传">
</form>
</body>
</html>

接口是/upload,请求方式是post

三、创建文件上传处理接口:

java 复制代码
package org.sang.cc;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;

import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@RestController
public class FileUploadController {
	SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd");
	@PostMapping("/upload")
	public String upload(MultipartFile uploadFile,HttpServletRequest req)
	{
		try {
		//String realPath=req.getSession().getServletContext().getRealPath("/");
		String realPath=ResourceUtils.getURL("classpath:").getPath();		
		String format=sdf.format(new Date());
		System.out.println("realPath:"+realPath+"static/"+format);
		File folder=new File(realPath+"static/"+format);
		if(!folder.isDirectory())
		{
			folder.mkdirs();
		}
		String oldName=uploadFile.getOriginalFilename();
		String newName=UUID.randomUUID().toString()+oldName.substring(oldName.lastIndexOf("."),oldName.length());
		
			uploadFile.transferTo(new File(folder,newName));
			String filePath=req.getScheme()+"://"+req.getServerName()+":"+
			req.getServerPort()+"/static/"+format+"/"+newName;
			return filePath;
		}catch(IOException e)
		{
			e.printStackTrace();
		}
		return "上传失败!";
	}
}

将上传的文件存储在static目录下,返回一个路径字符串

四、上传文件配置:

配置application.properties文件内容

java 复制代码
spring.servlet.multipart.enabled=true
spring.servlet.multipart.file-size-threshold=0
spring.servlet.multipart.location=E:\\temp
spring.servlet.multipart.max-file-size=1MB
spring.servlet.multipart.max-request-size=10MB
spring.servlet.multipart.resolve-lazily=false
  • 配置上传文件的临时保存位置为E:\temp
  • 配置单文件最大上传大小为1MB
  • 多文件时总大小为10MB

五、测试:

上传页

上传完成页

展示图片页

物理保存目录

相关推荐
忆雾屿7 分钟前
云原生时代 Kafka 深度实践:06原理剖析与源码解读
java·后端·云原生·kafka
武昌库里写JAVA20 分钟前
iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
java·开发语言·spring boot·学习·课程设计
gaoliheng00629 分钟前
Redis看门狗机制
java·数据库·redis
我是唐青枫31 分钟前
.NET AOT 详解
java·服务器·.net
小白杨树树43 分钟前
【WebSocket】SpringBoot项目中使用WebSocket
spring boot·websocket·网络协议
Su米苏1 小时前
Axios请求超时重发机制
java
本郡主是喵2 小时前
并发编程 - go版
java·服务器·开发语言
南风lof2 小时前
源码赏析:Java线程池中的那些细节
java·源码阅读
pengyu2 小时前
【Java设计原则与模式之系统化精讲:零】 | 编程世界的道与术(理论篇)
java·后端·设计模式