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());
}
}

相关文章
|
Java
在 Java 中捕获和处理自定义异常的代码示例
本文提供了一个 Java 代码示例,展示了如何捕获和处理自定义异常。通过创建自定义异常类并使用 try-catch 语句,可以更灵活地处理程序中的错误情况。
397 1
|
2月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
123 4
|
4月前
|
Java 数据库 C++
Java异常处理机制:try-catch、throws与自定义异常
本文深入解析Java异常处理机制,涵盖异常分类、try-catch-finally使用、throw与throws区别、自定义异常及最佳实践,助你写出更健壮、清晰的代码,提升Java编程能力。
|
6月前
|
算法 Java 测试技术
Java 从入门到实战完整学习路径与项目实战指南
本文详细介绍了“Java从入门到实战”的学习路径与应用实例,涵盖基础、进阶、框架工具及项目实战四个阶段。内容包括环境搭建、语法基础、面向对象编程,数据结构与算法、多线程并发、JVM原理,以及Spring框架等核心技术。通过学生管理系统、文件下载器和博客系统等实例,帮助读者将理论应用于实践。最后,提供全链路电商系统的开发方案,涉及前后端技术栈与分布式架构。附代码资源链接,助力成为合格的Java开发者。
276 4
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
253 9
|
5月前
|
XML 人工智能 Java
java通过自定义TraceId实现简单的链路追踪
本文介绍了如何在Spring Boot项目中通过SLF4J的MDC实现日志上下文traceId追踪。内容涵盖依赖配置、拦截器实现、网关与服务间调用的traceId传递、多线程环境下的上下文同步,以及logback日志格式配置。适用于小型微服务架构的链路追踪,便于排查复杂调用场景中的问题。
267 0
|
Java
在 Java 中,如何自定义`NumberFormatException`异常
在Java中,自定义`NumberFormatException`异常可以通过继承`IllegalArgumentException`类并重写其构造方法来实现。自定义异常类可以添加额外的错误信息或行为,以便更精确地处理特定的数字格式转换错误。
238 1
|
10月前
|
Java
java引入本地 MultipartFile 实现多部分文件上传
在Java中,`MultipartFile`通常用于处理通过HTML表单上传的文件。但在某些情况下,需要直接从本地文件系统获取文件并上传。本文介绍如何创建一个实现了`MultipartFile`接口的本地类`LocalMultipartFile`,将本地文件转换为`MultipartFile`对象,简化文件上传流程。此方法适用于批量上传等场景,避免了表单上传的复杂性。代码示例展示了如何实现和使用该类进行文件上传操作。作者:华科云商小彭。链接:[稀土掘金](https://juejin.cn/post/7377559533785530431)。
507 18
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
406 34
|
Java Android开发
Eclipse Java 构建路径
Eclipse Java 构建路径
165 3