SpringBoot上传下载文件+oss实例

 更新时间:2024年04月19日 15:52:44   作者:偷代码的猫  
这篇文章主要介绍了SpringBoot上传下载文件+oss实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

SpringBoot上传下载文件+oss

上传文件

Controller
 
@ApiOperation(value = "上传文件", tags = {"通用接口",})
@ApiResponses(value = {@ApiResponse(code = 200, message = "上传文件", response = ResultVO.class)})
@PostMapping("/upload/file")
public ResultVO uploadFile(@ApiParam(value = "文件") @RequestParam("file") MultipartFile file,
                               @ApiParam(value = "id") @RequestParam("id")Integer id) {
    String filePath = "xx/"+file.getOriginalFilename();
    ResultVO resultVO = new ResultVO();
    resultVO.setCode(200);
    resultVO.setMessage("上传成功");
    try {
        ossUtil.uploadFile(file.getInputStream(),filePath);
    }catch (Exception e){
        resultVO.setMessage("上传失败");
        e.printStackTrace();
    }
    return resultVO;
}
Service
 
/**
     * 上传文件
     * @param inputStream
     * @param fileName
     */
    public void uploadFile(InputStream inputStream, String fileName){
        OSS ossClient = new OSSClientBuilder().build(endpoint, keyId, keySecret);
        String objectName = fileDir+"/"+fileName;
        if(!ossClient.doesBucketExist(bucketName)){
            ossClient.createBucket(bucketName);
        }
        ossClient.putObject(bucketName,objectName,inputStream);
        ossClient.shutdown();
    }

下载文件

Controller
 
/**
     * 上传文件
*/
@ApiOperation(value = "下载文件", tags = {"通用接口",})
@ApiResponses(value = {@ApiResponse(code = 200, message = "下载文件", response = ResultVO.class)})
@GetMapping("/down/file")
public ResponseEntity downFile(@ApiParam(value = "文件名,包括后缀") @RequestParam("name") String name) {
        ResultVO resultVO = new ResultVO();
        String filePath = "xx/"+name;
        resultVO.setCode(200);
        resultVO.setMessage("下载成功");
        try {
//            ossUtil.downloadFile(name,saveDir,filePath);
            InputStream inputStream = ossUtil.downloadFile(filePath);
            HttpHeaders headers = new HttpHeaders();
            headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
            headers.add("Content-Disposition", "attachment; filename=" + new String(name.getBytes("UTF-8"),"iso-8859-1"));
            headers.add("Pragma", "no-cache");
            headers.add("Expires", "0");
            headers.add("Last-Modified", new Date().toString());
            headers.add("ETag", String.valueOf(System.currentTimeMillis()));
            return new ResponseEntity<byte[]>(ossUtil.getBytes(inputStream), headers, HttpStatus.OK);
 
        }catch (Exception e){
            resultVO.setMessage("下载失败");
            e.printStackTrace();
        }
    return ResponseEntity.notFound().build();
}
Service
 
/**
     * 下载文件
     */
    public InputStream downloadFile(String filePath) throws IOException {
        OSS ossClient = new OSSClientBuilder().build(endpoint, keyId, keySecret);
        String objectName = fileDir+"/"+filePath;
        OSSObject ossObject = ossClient.getObject(bucketName, objectName);
//        ossClient.shutdown();
        return ossObject.getObjectContent();
    }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java实现冒泡排序示例介绍

    Java实现冒泡排序示例介绍

    冒泡排序是一种简单的排序算法,通过不断比较相邻两个元素的大小,将较大的元素向后移动,最终将最大的元素放到了数组的末尾。Java中的实现方式是通过嵌套两层循环,外层循环控制比较的次数,内层循环控制每次比较时相邻元素的比较和交换
    2023-04-04
  • Java出现中文乱码问题分析及解决方案

    Java出现中文乱码问题分析及解决方案

    在Java开发中,处理中文乱码是一个常见的问题,由于字符集和编码的复杂性,开发者可能面临各种导致乱码的情况,正确地处理中文字符集对于确保应用程序的可靠性和国际化至关重要,本文给大家介绍了Java中文乱码分析及解决方案,需要的朋友可以参考下
    2024-02-02
  • Java中的非对称加密算法原理与实现方式

    Java中的非对称加密算法原理与实现方式

    在当今的信息时代,数据安全已经成为了一个至关重要的问题,加密技术作为保障信息安全的重要手段,受到了广泛的应用和关注,本篇文章将详细介绍Java中的非对称加密算法原理及其实现方式,需要的朋友可以参考下
    2023-12-12
  • SpringBoot中Json工具类的实现

    SpringBoot中Json工具类的实现

    本文介绍在Java项目中实现一个JSON工具类,支持对象与JSON字符串之间的转换,并提供依赖和代码示例便于直接应用,感兴趣的可以了解一下
    2024-10-10
  • 基于SpringBoot+WebSocket实现网页在线聊天室

    基于SpringBoot+WebSocket实现网页在线聊天室

    文章介绍了从零构建一套前后端分离的网页聊天室系统,涵盖架构设计、数据库设计、登录认证、WebSocket实时消息推送及全局异常处理等核心功能,文章详细描述了前端页面与交互、后端技术栈及核心功能实现、数据库设计等以及项目运行等等内容,需要的朋友可以参考下
    2026-05-05
  • Java中fail-fast和fail-safe的使用

    Java中fail-fast和fail-safe的使用

    fail-fast和fail-safe是两种不同的迭代器行为,特别是在遍历集合时遇到并发修改的情况,本文主要介绍了Java中fail-fast和fail-safe的使用,感兴趣的可以了解一下
    2024-08-08
  • 如何将字符串、字节数组转为输入流

    如何将字符串、字节数组转为输入流

    这篇文章主要介绍了如何将字符串、字节数组转为输入流问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Mybatis增删改查mapper文件写法详解

    Mybatis增删改查mapper文件写法详解

    这篇文章主要介绍了Mybatis增删改查mapper文件写法的相关资料,需要的朋友可以参考下
    2017-03-03
  • Spring Boot 中 @Scheduled 定时任务不生效的原因及解决方法

    Spring Boot 中 @Scheduled 定时任务不生效的原因及解决方法

    SpringBoot中@Scheduled注解用于创建定时任务,但有时任务可能不生效,本文介绍Spring Boot 中 @Scheduled 定时任务不生效的原因及解决方法,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • Java 正确地从类路径中获取资源

    Java 正确地从类路径中获取资源

    Java 有能力从类路径中查找获取资源,可将资源放在 CLASSPATH 里,也可打包到 Jar 中。本文将具体讲述获取资源的步骤,感兴趣的朋友可以了解下
    2021-05-05

最新评论