springboot 删除路径下面所有文件_SpringBoot文件上传、删除及下载

SpringBoot文件上传、删除及下载

最近的项目中,需要将文件保存项目的根目录路径下,特此记录下文件的操作:

文件上传

/**

* 文件上传(相对路径)

*

* @param uploadFile 文件

* @param request 参数

* @return 文件路径

*/

public static String upload(MultipartFile uploadFile, HttpServletRequest request) {

// 项目根路径下的目录

final String UPLOAD_PATH_PREFIX = "/static/resources/upload/app";

//访问目录

final String DOWNLOAD_PATH_PREFIX = "/resources/upload/app";

if (uploadFile.isEmpty()) {

//返回选择文件提示

return "请选择上传文件";

}

//项目根目录的绝对路径 + 指定文件夹路径

String realPath = System.getProperty("user.dir") + UPLOAD_PATH_PREFIX;

logger.info("-----------上传文件保存的路径【" + realPath + "】-----------");

//存放上传文件的文件夹

File file = new File(realPath);

logger.info("-----------输出文件夹绝对路径 -- 这里的绝对路径是相当于当前项目的路径【" + file.getAbsolutePath() + "】-----------");

if (!file.isDirectory()) {

//递归生成文件夹

file.mkdirs();

}

//获取原始的名字

String oldName = uploadFile.getOriginalFilename();

logger.info("-----------文件原始的名字【" + oldName + "】-----------");

//原文件名 + 时间戳 + 文件类型

String newName = oldName.substring(0, oldName.lastIndexOf(".")) + System.currentTimeMillis() + oldName.substring(oldName.lastIndexOf("."));

logger.info("-----------文件要保存后的新名字【" + newName + "】-----------");

try {

//构建真实的文件路径

File newFile = new File(file.getAbsolutePath() + File.separator + newName);

//转存文件到指定路径,如果文件名重复的话,将会覆盖掉之前的文件,这里是把文件上传到 “绝对路径”

uploadFile.transferTo(newFile);

//访问前缀方式一

// String filePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + DOWNLOAD_PATH_PREFIX + "/" + newName;

//访问前缀方式二

// StringBuffer url = request.getRequestURL();

// String tempContextUrl = url.delete(url.length() - request.getRequestURI().length(), url.length()).toString();

//不包含访问前缀

String filePath = DOWNLOAD_PATH_PREFIX + "/" + newName;

logger.info("-----------【" + filePath + "】-----------");

return filePath;

} catch (Exception e) {

e.printStackTrace();

}

return "上传失败!";

}

文件删除

/**

* 文件删除

*

* @param filePath 文件路径

* @return false、true

*/

public static Boolean delete(String filePath) {

File file = new File(filePath);

if (file.exists()) {

file.delete();

System.out.println("===========删除成功=================");

return true;

} else {

System.out.println("===============删除失败==============");

return false;

}

}

文件下载

/**

* 文件下载

*

* @param response 声明response

* @return false、true

*/

public Boolean downloadFile(HttpServletResponse response) {

String fileName = "redis-serve1599809147700.exe";// 文件名

if (fileName != null) {

//设置文件路径

File file = new File(System.getProperty("user.dir") + "/static/resources/upload/app/redis-serve1599809147700.exe");

//File file = new File(realPath , fileName);

if (file.exists()) {

response.setContentType("application/force-download");// 设置强制下载不打开

response.addHeader("Content-Disposition", "attachment;fileName=" + fileName);// 设置文件名

byte[] buffer = new byte[1024];

FileInputStream fis = null;

BufferedInputStream bis = null;

try {

fis = new FileInputStream(file);

bis = new BufferedInputStream(fis);

OutputStream os = response.getOutputStream();

int i = bis.read(buffer);

while (i != -1) {

os.write(buffer, 0, i);

i = bis.read(buffer);

}

return true;

} catch (Exception e) {

e.printStackTrace();

} finally {

if (bis != null) {

try {

bis.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if (fis != null) {

try {

fis.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

}

return false;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot中,可以通过整合阿里云OSS来实现文件的上传、下载删除操作。要删除文件,首先需要获取到要删除文件在OSS上的路径。然后,使用阿里云OSS的Java SDK提供的API来进行删除操作。具体步骤如下: 1. 首先,确保已经在pom.xml文件中添加了阿里云OSS的依赖。 2. 在配置文件中配置阿里云OSS的相关信息,包括accessKeyId、accessKeySecret、endpoint等。 3. 在代码中引入阿里云OSS的相关类和方法。 4. 创建一个OSSClient对象,通过accessKeyId和accessKeySecret进行身份验证,并指定endpoint。 5. 调用OSSClient的deleteObject方法,传入存储空间(Bucket)名称和要删除文件在OSS上的路径,即可删除文件。 示例代码如下: ```java import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; public class OSSUtils { private static String endpoint = "<your_endpoint>"; private static String accessKeyId = "<your_accessKeyId>"; private static String accessKeySecret = "<your_accessKeySecret>"; private static String bucketName = "<your_bucketName>"; public static void deleteFile(String objectName) { OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); ossClient.deleteObject(bucketName, objectName); ossClient.shutdown(); } } ``` 其中,`objectName`是要删除文件在OSS上的路径。 通过调用`deleteFile`方法,即可删除指定路径下的文件。 请注意,删除操作是不可逆的,请确保在删除文件之前进行适当的验证和确认。 参考资料: SpringBoot项目实现日志打印SQL明细(包括SQL语句和参数)几种方式 虽然这个功能对应现在的分布式系统已不用了,但还是做个笔记吧,需要参考OSS云存储的见我 的这篇博客: 另外OSS还有专门的oss-browser 下载链接: https://help.aliyun.com/document_detail/209974.html 一、 基本概念 1、存储空间(Bucket)<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SpringBoot整合阿里云OSS,支持文件上传下载删除、加签等操作](https://blog.csdn.net/weixin_33005117/article/details/125206220)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Springboot 上传和删除本地文件](https://blog.csdn.net/qq_50909707/article/details/127351663)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值