zeromemos
最好的学习方法就是输出所学的知识SpringBoot文件上传至jar包同级目录
参考:https://blog.csdn.net/qq_25125327/article/details/91039288
引入依赖
<!-- 文件上传依赖包 -->
<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.4</version>
</dependency>
在utils包下创建工具类FileHandleUtil
package com.zeromemos.utils;
import org.apache.commons.io.FileUtils;
import org.springframework.util.ResourceUtils;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class FileHandleUtil {
/** 绝对路径 **/
private static String absolutePath = "";
/** 静态目录 **/
private static String staticDir = "static";
/** 文件存放的目录 **/
private static String fileDir = "/upload/";
/**
* 上传单个文件
* 最后文件存放路径为:static/upload/image/test.jpg
* 文件访问路径为:http://127.0.0.1:8080/upload/image/test.jpg
* 该方法返回值为:/upload/image/test.jpg
* @param inputStream 文件流
* @param path 文件路径,如:image/
* @param filename 文件名,如:test.jpg
* @return 成功:上传后的文件访问路径,失败返回:null
*/
public static String upload(InputStream inputStream, String path, String filename) {
//第一次会创建文件夹
createDirIfNotExists();
String resultPath = fileDir + path + filename;
//存文件
File uploadFile = new File(absolutePath, staticDir + resultPath);
try {
FileUtils.copyInputStreamToFile(inputStream, uploadFile);
} catch (IOException e) {
e.printStackTrace();
return null;
}
return resultPath;
}
/**
* 创建文件夹路径
*/
private static void createDirIfNotExists() {
if (!absolutePath.isEmpty()) {return;}
//获取跟目录
File file = null;
try {
file = new File(ResourceUtils.getURL("classpath:").getPath());
} catch (FileNotFoundException e) {
throw new RuntimeException("获取根目录失败,无法创建上传目录!");
}
if(!file.exists()) {
file = new File("");
}
absolutePath = file.getAbsolutePath();
File upload = new File(absolutePath, staticDir + fileDir);
if(!upload.exists()) {
upload.mkdirs();
}
}
/**
* 删除文件
* @param path 文件访问的路径upload开始 如: /upload/image/test.jpg
* @return true 删除成功; false 删除失败
*/
public static boolean delete(String path) {
File file = new File(absolutePath, staticDir + path);
if (file.exists()) {
return file.delete();
}
return false;
}
}
测试方法
//单文件
@PostMapping("/upload")
public R upload(MultipartFile photo){
//如果非空
if (!photo.isEmpty()){
//获取文件名
String originalFilename = photo.getOriginalFilename();
//上传至static\\upload\\image\下
try {
FileHandleUtil.upload(photo.getInputStream(), "image/", originalFilename);
} catch (IOException e) {
e.printStackTrace();
}
}
return R.ok();
}
在application.properties里添加配置,指定static目录到jar包同级static文件夹下
#设置静态文件目录static跟jar包存放目录同级file:static/
spring.web.resources.static-locations=classpath:static/,file:static/
Postman上传测试
访问测试:
jar包和图片文件位置
评论区
关于我们
本站主要用于记录个人学习笔记,网站开发中,如需以前站内资料请加QQ群272473835索取。注册账号仅提供回帖功能,可不注册!