`

SpringBoot上传到OSS

 
阅读更多
/** 
   * 上传 
   * @param request 
   * @param response 
   * @return 
   */  
  @RequestMapping(value = "/upload", method = { RequestMethod.POST })  
  @ResponseBody  
  public ResultModel<List<String>> upload(HttpServletRequest request, HttpServletResponse response) {  
      ResultModel<List<String>> resultModel = new ResultModel<List<String>>();  
      try {  
  
          // 创建一个通用的多部分解析器  
          CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());  
          List<String> files = new ArrayList<>();  
          // 判断 request 是否有文件上传,即多部分请求  
          if (multipartResolver.isMultipart(request)) {  
              // 转换成多部分request  
              MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;  
              // 取得request中的所有文件名  
              Iterator<String> iter = multiRequest.getFileNames();  
              while (iter.hasNext()) {  
                  // 取得上传文件  
                  MultipartFile file = multiRequest.getFile(iter.next());  
                  if (file != null) {  
                      // 取得当前上传文件的文件名称  
                      String fileName = file.getOriginalFilename();  
                      // 如果名称不为空,说明该文件存在,否则说明该文件不存在  
                      if (fileName.trim() != "") {  
                          File newFile = new File(fileName);  
                          FileOutputStream outStream = new FileOutputStream(newFile); // 文件输出流用于将数据写入文件  
                          outStream.write(file.getBytes());  
                          outStream.close(); // 关闭文件输出流  
                          file.transferTo(newFile);  
                          // 上传到阿里云  
                          files.add(AliOSSUtil.upload(newFile));  
                          newFile.delete();  
                      }  
                  }  
              }  
          }  
  
          resultModel.setReturnValue(files);  
      } catch (ValidateException e) {  
          resultModel.setSuccessed(false);  
          resultModel.setErrorCode(e.getMessage());  
      } catch (Exception e) {  
          resultModel.setSuccessed(false);  
          resultModel.setErrorCode("system error");  
          log.error(e.getMessage());  
          e.printStackTrace();  
      }  
      return resultModel;  
  }  


Util文件

public class AliOSSUtil {  
  
    private final static Logger log               = Logger.getLogger(AliOSSUtil.class);  
    private static String       END_POINT         = "oss-cn-shanghai.aliyuncs.com";  
    private static String       ACCESS_KEY_ID     = "xxx";  
    private static String       ACCESS_KEY_SECRET = "xxx";  
    private static String       BUCKET_NAME       = "xxx-image";  
    // 文件访问域名  
    private static String       FILE_HOST         = "https://file.xxx.com/";  
  
    /** 
     * 方法描述:上传文件 
     * @param file 文件对象 
     * @return 
     */  
    public static String upload(File file) {  
        if (file == null) {  
            return null;  
        }  
        // 创建OSS客户端  
        OSSClient ossClient = new OSSClient(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);  
        try {  
            // 判断文件容器是否存在,不存在则创建  
            if (!ossClient.doesBucketExist(BUCKET_NAME)) {  
                ossClient.createBucket(BUCKET_NAME);  
                CreateBucketRequest createBucketRequest = new CreateBucketRequest(BUCKET_NAME);  
                createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);  
                ossClient.createBucket(createBucketRequest);  
            }  
            // 创建文件路径  
  
            String fileUrl = DateUtil.dateTo8String2(new Date()) + "/" + UuidUtil.getUuidByJdk(false);  
            // 上传文件  
            PutObjectResult result = ossClient.putObject(new PutObjectRequest(BUCKET_NAME, fileUrl, file));  
            if (null != result) {  
                return FILE_HOST + fileUrl;  
            }  
        } catch (OSSException oe) {  
            log.error(oe.getMessage());  
        } catch (ClientException ce) {  
            log.error(ce.getMessage());  
        } finally {  
            // 关闭OSS服务,一定要关闭  
            ossClient.shutdown();  
        }  
        return null;  
    }  
  
    /** 
     * 方法描述:上传文件 
     * @param inputStream 文件流 
     * @return 
     * @throws FileNotFoundException 
     */  
    public static String upload(InputStream inputStream) throws FileNotFoundException {  
        if (inputStream == null) {  
            return null;  
        }  
        // 创建OSS客户端  
        OSSClient ossClient = new OSSClient(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);  
        try {  
            // 判断文件容器是否存在,不存在则创建  
            if (!ossClient.doesBucketExist(BUCKET_NAME)) {  
                ossClient.createBucket(BUCKET_NAME);  
                CreateBucketRequest createBucketRequest = new CreateBucketRequest(BUCKET_NAME);  
                createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);  
                ossClient.createBucket(createBucketRequest);  
            }  
            // 创建文件路径  
            String fileUrl = DateUtil.dateTo8String2(new Date()) + "/" + UuidUtil.getUuidByJdk(false);  
            // 上传文件  
            PutObjectResult result = ossClient.putObject(new PutObjectRequest(BUCKET_NAME, fileUrl, inputStream));  
            if (null != result) {  
                return FILE_HOST + fileUrl;  
            }  
        } catch (OSSException oe) {  
            log.error(oe.getMessage());  
        } catch (ClientException ce) {  
            log.error(ce.getMessage());  
        } finally {  
            // 关闭OSS服务,一定要关闭  
            ossClient.shutdown();  
        }  
        return null;  
  
    }  
  
} 





最后 MAVEN 的依赖配置





   <dependency>  
        <groupId>com.aliyun.oss</groupId>  
        <artifactId>aliyun-sdk-oss</artifactId>  
        <version>2.4.0</version>  
    </dependency>  
    <dependency>  
        <groupId>commons-fileupload</groupId>  
        <artifactId>commons-fileupload</artifactId>  
        <version>1.3.1</version>  
    </dependency>  
分享到:
评论

相关推荐

    springboot整合oss实现文件的上传,查看,删除,下载

    在本文中,我们将深入探讨如何使用SpringBoot与OSS(Object Storage Service)集成,实现文件的上传、查看、删除和下载功能。OSS通常是指云存储服务,如阿里云的OSS,它提供了大规模、安全且高可用的在线存储解决...

    springboot整合easypoi实现文件导入导出OSS文件上传和下载。OSS图片导出

    在本项目中,我们主要探讨如何使用SpringBoot框架与阿里云OSS(Object Storage Service)服务相结合,通过Easypoi库实现文件的导入、导出功能,以及OSS上的文件上传和下载。Easypoi是一个强大的Java操作Excel的工具...

    Springboot+OSS+VUE素材管理案例

    Web直传方式是指用户可以直接通过浏览器将文件上传到OSS,减少了中间服务器的负担,提高了上传效率。 Vue.js是一种前端JavaScript框架,用于构建用户界面。它以其简单易用、高性能和可组合性而受到广泛欢迎。在这个...

    springboot整合京东云OSS对象储存

    springboot整合京东云OSS对象储存.实现文件/图片存储,下载,删除操作.有完整的demo.

    springboot-vue-oss.txt

    vue前端将大文件分片通过springboot微服务上传到阿里云oss,已经调试没问题可以用,只要配置一下redis连接地址和oss的连接参数

    SpringBoot集成阿里云OSS图片上传

    本文主要介绍了如何使用SpringBoot集成阿里云OSS实现图片上传功能,包括添加阿里云OSS的SDK依赖、配置阿里云OSS的参数、创建OSS工具类和上传图片到阿里云OSS服务器。通过使用阿里云OSS,可以将图片存储到云端,减少...

    SpringBoot整合阿里云OSS对象存储服务的实现

    本文主要介绍了如何使用SpringBoot框架整合阿里云OSS对象存储服务,实现文件上传和存储功能。文章通过示例代码详细介绍了整合过程,对读者学习和工作具有参考价值。 一、配置OSS服务 首先需要在阿里云平台上开通...

    springboot实现上传图片添加水印

    在Spring Boot框架中实现图片上传并添加水印的功能,是一个常见的需求,特别是在开发涉及多媒体内容的...以上就是关于Spring Boot实现上传图片并添加水印的详细内容,涵盖了从文件上传、图片处理到结果展示的完整流程。

    用SpringBoot实现的文件分片上传和下载功能

    这里通常会涉及到文件元数据的管理,如文件名、大小、上传时间、分片序号等。 接下来,**文件完整性校验** 很关键。为了确保分片能正确合并,每个分片上传后,需要计算其哈希值(如MD5或SHA-256),并存储下来。当...

    springboot整合阿里云oss进行文件上传

    这里,我们创建了两个POST方法:`uploadFile`用于接收前端上传的文件并存储到OSS,`uploadCallback`用于接收OSS的回调信息,可以根据需求实现自己的回调逻辑。 **7. 前端交互** 前端可以通过Ajax或者Fetch API向`/...

    SpringBoot整合阿里云OSS文件上传下载

    SpringBoot整合阿里云OSS文件上传下载完整的资料和详细过程的配置,亲自测试有效

    SpringBoot文件上传.zip

    在SpringBoot框架中,文件上传是一项常见的功能,尤其对于开发Web应用来说,用户可能需要上传图片、文档等数据。在SpringBoot 2.x版本中,文件上传可以通过集成Spring MVC的MultipartResolver组件来实现,这使得处理...

    阿里oss服务端签名直传并设置上传回调

    采用服务端签名后直传方案有个问题:大多数情况下,用户上传数据后,应用服务器需要知道用户...为此OSS提供了上传回调方案。OSS回调完成后,应用服务器再将结果返回给客户端,以便服务端实时了解用户上传了什么文件。

    SpringBoot + FFmpeg 实现视频转码为M3U8

    客户端上传视频到服务器,服务器对视频进行切片后,返回m3u8,封面等访问路径。可以在线的播放。 服务器可以对视频做一些简单的处理,例如裁剪,封面的截取时间。 在配置文件中,配置到本地视频目录后启动 打开页面 ...

    基于阿里云OSS的图床项目(SpringBoot+AliOSS)+源代码+文档说明

    1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合...

    SpringBoot上传文件到本服务器 目录与jar包同级问题

    SpringBoot 上传文件到本服务器目录与 jar 包同级问题 SpringBoot 上传文件到本服务器目录与 jar 包同级问题是一个常见的问题。当我们使用 SpringBoot 的 jar 包发布项目时,上传文件存放会变得非常复杂。因为我们...

    阿里oss上传demo

    将阿里OSS与SpringBoot结合,可以方便地在Web应用中实现文件的上传和下载功能。 在这个“阿里oss上传demo”中,我们主要会涉及以下几个关键知识点: 1. **阿里云OSS服务**:理解OSS的基本概念和工作原理,包括存储...

    SpringBoot+html实现h5录音上传到后台

    6. **文件存储与处理**:接收到文件后,你可能需要将其存储在服务器的某个位置,例如使用SpringBoot集成的文件系统存储或者云存储服务(如阿里云OSS)。此外,可能还需要对音频文件进行一些处理,比如转码、分析或...

    SpringBoot文件上传.docx

    在SpringBoot应用中,文件上传是一项常见的功能,用于接收用户通过网页上传的文件。本教程将详细介绍如何在...同时,考虑使用云存储服务如阿里云OSS或AWS S3来存储上传的文件,这样可以更好地扩展和管理文件。

    图片视频上传自动识别分服务器案例(图片上传到fastDFS自建图片服务器,视频上传到aliyunOSS).zip

    这是一个关于使用SpringBoot实现图片和视频上传,并根据文件类型智能分配到不同的存储服务的案例。在该案例中,图片会被上传到自建的FastDFS图片服务器,而视频则会被上传到阿里云的OSS(Object Storage Service)...

Global site tag (gtag.js) - Google Analytics