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

总结

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

相关文章

  • SpringBoot整合MinIO实现文件存储系统的代码示例

    SpringBoot整合MinIO实现文件存储系统的代码示例

    在现代的应用程序中,文件存储和管理是一个常见的需求,MinIO是一个开源的对象存储系统,与Spring Boot框架结合使用,可以快速构建高性能的文件存储系统,本文将介绍如何使用Spring Boot和MinIO来实现文件存储系统
    2023-06-06
  • 解决Error:Java:无效的源发行版:14问题

    解决Error:Java:无效的源发行版:14问题

    在项目开发中,版本不一致常见问题,首先,应检查本地JDK版本,使用命令java-version,其次,核对项目及模块版本,若有不一致,通过修改pom.xml文件同步版本,重新下载依赖即可解决问题,这种方法简单有效,适用于多种开发环境
    2024-10-10
  • Java使用poi将word转换为html

    Java使用poi将word转换为html

    这篇文章主要为大家详细介绍了Java使用poi将word转换为html的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 解决Java Redis删除HashMap中的key踩到的坑

    解决Java Redis删除HashMap中的key踩到的坑

    这篇文章主要介绍了解决Java Redis删除HashMap中的key踩到的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Java使用组件编写窗口实现网上文件下载

    Java使用组件编写窗口实现网上文件下载

    这篇文章主要为大家详细介绍了Java使用组件编写窗口实现网上文件下载的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • SpringBoot实现文件在线预览功能的全过程

    SpringBoot实现文件在线预览功能的全过程

    我们开发业务系统的时候,经常有那种文档文件在线预览的需求,下面这篇文章主要给大家介绍了关于SpringBoot实现文件在线预览功能的相关资料,需要的朋友可以参考下
    2021-11-11
  • Spring Cloud学习教程之DiscoveryClient的深入探究

    Spring Cloud学习教程之DiscoveryClient的深入探究

    这篇文章主要给大家介绍了关于Spring Cloud学习教程之DiscoveryClient的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-04-04
  • 深入解析SpringBatch适配器

    深入解析SpringBatch适配器

    Spring Batch是Spring的一个子项目,使用Java语言并基于Spring框架为基础开发,使得已经使用 Spring 框架的开发者或者企业更容易访问和利用企业服务,本文给大家介绍SpringBatch适配器的相关知识,感兴趣的朋友一起看看吧
    2021-11-11
  • Java Process类的详解及实例代码

    Java Process类的详解及实例代码

    这篇文章主要介绍了Java Process类的详解及实例代码的相关资料,需要的朋友可以参考下
    2017-02-02
  • springboot学习之构建简单项目搭建步骤详解

    springboot学习之构建简单项目搭建步骤详解

    这篇文章主要介绍了springboot学习之构建简单项目搭建步骤详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10

最新评论