Java实现文件上传到本地(自定义保存路径)

简介: Java实现文件上传到本地(自定义保存路径)

首先基于 springboot 实现的,其他场景下可以引入相应的 jar 包后进行整合。

首先写入一个方法,方法的参数为传入的文件,方法的返回值自定义,这里返回类型为 String ,返回文件的存储地址。
public String uploadToLocal(MultipartFile file){
}
接着在方法中进行文件的具体存取操作。

首先获取上传文件的原始名称:
String originName = file.getOriginalFilename();
接着可以指定只能上传 pdf,doc,docx 类型的文件,这里需要先找出文件的后缀来判断上传文件的类型是否合法:

先将指定的后缀存在 set 集合中, set 集合的底层是哈希表,时间复杂度为 O(1)
Set set = new HashSet<>();
set.add(".pdf");
set.add(".doc");
set.add(".docx");
set.add(".jpg");
同时也可以获取到文件类型,比如 ".pdf" 将"."去掉得到类型 pdf
String fileType = originName.substring(count + 1);
if(!set.contains(endName)){
return new String("上传的文件类型错误,只能上传pdf,doc,docx,jpg类型的文件");
}
如果文件类型合法,进行接下来的操作。

首先确定文件的保存路径,可以自定义。这里直接保存在项目父目录下,加入项目叫 test,路径为

test/files/文件类型/保存文件时候的时间(yyyyMMdd)年月日/文件原始名称

这就需要获取当天的日期并格式化为yyyyMMdd格式,并获取文件类型。

路径采用拼接的方式,先获取当前项目的路径然后一步步拼接:
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String format = sdf.format(new Date());
String savePath = System.getProperty("user.dir") + "\" + "files" + "\" + fileType + "\" + format;

最后进行文件的保存,文件保存过程中可能会出现异常,因此用try...catch:
try {
file.transferTo(new File(folder,saveName));
String filePath = savePath + "\" + saveName;
return new String("文件路径为:" + filePath);
} catch (IOException e){
return new String(e.getMessage());
}
最后返回的String为文件的存储地址,即保存路径 + 文件名。

接下来是方法的完整代码:
public String uploadToLocal(MultipartFile file){
// 获取文件原本的名字
String originName = file.getOriginalFilename();
// 判断文件是否是pdf文件
Set set = new HashSet<>();
set.add(".pdf");
set.add(".doc");
set.add(".docx");
// 取出文件的后缀
int count = 0;
for(int i = 0; i < originName.length(); i++){
if(originName.charAt(i) == '.'){
count = i;
break;
}
}
String endName = originName.substring(count); //取出文件类型
String fileType = originName.substring(count + 1); //文件类型
if(!set.contains(endName)){
return new String("上传的文件类型错误,只能上传pdf,doc,docx类型的文件");
}
// 创建保存路径
//日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String format = sdf.format(new Date());
String savePath = System.getProperty("user.dir") + "\" + "files" + "\" + fileType + "\" + format;
// 保存文件的文件夹
File folder = new File(savePath);
// 判断路径是否存在,不存在则自动创建
if(!folder.exists()){
folder.mkdirs();
}
String saveName = originName;
try {
file.transferTo(new File(folder,saveName));
String filePath = savePath + "\" + saveName;
return new String("文件路径为:" + filePath);
} catch (IOException e){
return new String(e.getMessage());
}
}

相关文章
|
1天前
|
消息中间件 前端开发 Java
java学习路径
【4月更文挑战第9天】java学习路径
22 1
|
1天前
|
Java Spring 容器
【Java】Spring如何扫描自定义的注解?
【Java】Spring如何扫描自定义的注解?
41 0
|
1天前
|
算法 Java
算法:Java计算二叉树从根节点到叶子结点的最大路径和
算法:Java计算二叉树从根节点到叶子结点的最大路径和
|
1天前
|
设计模式 前端开发 安全
Java是一种广泛使用的编程语言,其学习路径可以大致分为以下几个阶段
【4月更文挑战第9天】Java是一种广泛使用的编程语言,其学习路径可以大致分为以下几个阶段
18 1
|
1天前
|
算法 安全 Java
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
【4月更文挑战第28天】性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
32 1
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
|
1天前
|
缓存 前端开发 Java
15:Servlet 3.0文件上传与下载-Java Web
15:Servlet 3.0文件上传与下载-Java Web
29 5
|
1天前
|
存储 Java 数据格式
Java实战:轻松掌握文件重命名与路径提取技巧
Java实战:轻松掌握文件重命名与路径提取技巧
21 0
|
1天前
|
运维 编译器 API
对象存储oss使用问题之进行文件上传时报错java.io.EOFException如何解决
《对象存储OSS操作报错合集》精选了用户在使用阿里云对象存储服务(OSS)过程中出现的各种常见及疑难报错情况,包括但不限于权限问题、上传下载异常、Bucket配置错误、网络连接问题、跨域资源共享(CORS)设定错误、数据一致性问题以及API调用失败等场景。为用户降低故障排查时间,确保OSS服务的稳定运行与高效利用。
31 0
|
1天前
|
Java
Java配置大揭秘:读取自定义配置文件的绝佳指南
Java配置大揭秘:读取自定义配置文件的绝佳指南
24 0
Java配置大揭秘:读取自定义配置文件的绝佳指南
|
1天前
|
NoSQL Java Redis
Java自定义线程池的使用
Java自定义线程池的使用