在java上使用亚马逊云储存方法

 更新时间:2024年01月30日 10:39:14   作者:js1029  
这篇文章主要介绍了在java上使用亚马逊云储存方法,首先写一个配置类,写一个controller接口调用方法存储文件,本文结合示例代码给大家介绍的非常详细,需要的朋友参考下吧

在java上使用亚马逊云储存方法

1.写一个配置类

package com.app.framework.config;
import com.amazonaws.ClientConfiguration;
import com.amazonaws.Protocol;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.client.builder.AwsClientBuilder;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AmazonS3Config {
    @Bean
    public AmazonS3 amazonS3Client() {
        //用户名
        String accessKey = "";
        //密码
        String secretKey = "";
        AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
        AWSStaticCredentialsProvider awsStaticCredentialsProvider = new AWSStaticCredentialsProvider(credentials);
        ClientConfiguration config = new ClientConfiguration();
        String region = "wx-pbc";
        AwsClientBuilder.EndpointConfiguration endpointConfiguration = new AwsClientBuilder.EndpointConfiguration("cos.wx-pbc.cos.tg.unicom.local", region);
        return AmazonS3ClientBuilder.standard()
        .withCredentials(awsStaticCredentialsProvider)
        .withClientConfiguration(config.withProtocol(Protocol.HTTP).withSignerOverride("S3SignerType"))
        .withEndpointConfiguration(endpointConfiguration).build();
    }
}

2.写一个controller接口调用方法存储文件

package com.app.project.welfare.controller;
import cn.hutool.core.lang.UUID;
import com.aliyun.oss.*;
import com.aliyun.oss.model.PutObjectResult;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.app.framework.web.domain.AjaxResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
@RequestMapping("/oss")
@RestController
@Slf4j
public class OssController {
    /**
     * 把文件上传到自己的服务器,然后在上传到 Amazon s3存储器
     */
    @PostMapping("/upload-img-s3")
    public AjaxResult uploadImgAmazonS3(@RequestParam("file") MultipartFile file) throws IOException {
        log.info("文件上传:{}", file);
        //生成一个随机的UUID(通用唯一标识符)
        UUID uuid = UUID.fastUUID();
        //获取上传文件的原始文件名,并将其存储在变量fileName中
        String fileName = file.getOriginalFilename();
        //使用断言确保fileName不为空,如果为空则抛出异常
        assert fileName != null;
        //将文件名按照点号(".")分割成一个字符串数组
        String[] fileNameSplit = fileName.split("\\.");
        //将UUID和原始文件名中的扩展名重新拼接起来,形成新的文件名
        fileName = uuid + "." + fileNameSplit[1];
        //创建一个新的ObjectMetadata对象
        ObjectMetadata objectMetadata = new ObjectMetadata();
        //获取上传文件的输入流,并使用available()方法来获取该流中可用的字节数
        objectMetadata.setContentLength(file.getInputStream().available());
        //获取上传文件的内容类型(MIME类型)
        String contentType = file.getContentType();
        //将获取到的文件内容类型设置为新文件的元数据内容类型
        objectMetadata.setContentType(contentType);
        // 设置公共读
        objectMetadata.setHeader("x-amz-acl", "public-read");
        //拼接
        String finalFileName = "name/" + fileName;
        //将文件上传到名为"name"的S3存储桶中
        amazonS3.putObject("name", finalFileName, file.getInputStream(), objectMetadata);
        String imgUrl = "https://xxx" + finalFileName;
        return AjaxResult.success(imgUrl);
    }
}

这样,当前端调用后端的controller接口,就可以上传文件到亚马逊oss储存地址了

到此这篇关于在java上使用亚马逊云储存方法的文章就介绍到这了,更多相关java 亚马逊云储存内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring注解之@Import使用方法讲解

    Spring注解之@Import使用方法讲解

    @Import是Spring基于Java注解配置的主要组成部分,下面这篇文章主要给大家介绍了关于Spring注解之@Import的简单介绍,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • 解决Spring MVC中文乱码的编码配置

    解决Spring MVC中文乱码的编码配置

    这篇文章主要为大家介绍了解决SpringMVC中文乱码的编码配置示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • HDFS-Hadoop NameNode高可用机制

    HDFS-Hadoop NameNode高可用机制

    本文详细介绍了Hadoop NameNode高可用机制的各个方面内容,NameNode 的可用性直接决定了 Hadoop 集群的可用性,感兴趣的小伙伴可以参考本文章
    2021-08-08
  • Java利用future及时获取多线程运行结果

    Java利用future及时获取多线程运行结果

    在Java编程中,有时候会需要及时获取线程的运行结果,本文就通过一个相关实例向大家介绍Java利用future及时获取线程运行结果的方法,需要的朋友可以参考。
    2017-10-10
  • Quarkus集成Dubbo服务Rpc远程通讯框架整合

    Quarkus集成Dubbo服务Rpc远程通讯框架整合

    这篇文章主要为大家介绍了Quarkus集成Dubbo服务Rpc远程通讯框架的整合,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-02-02
  • IntelliJ IDEA里找不到javax.servlet的jar包的解决方法

    IntelliJ IDEA里找不到javax.servlet的jar包的解决方法

    这篇文章主要介绍了IntelliJ IDEA里找不到javax.servlet的jar包的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 基于springboot和redis实现单点登录

    基于springboot和redis实现单点登录

    这篇文章主要为大家详细介绍了基于springboot和redis实现单点登录,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • java实现短信验证码5分钟有效时间

    java实现短信验证码5分钟有效时间

    这篇文章主要为大家详细介绍了java实现短信验证码5分钟有效时间,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Java构建菜单树的实现示例

    Java构建菜单树的实现示例

    本文主要介绍了Java构建菜单树的实现示例,像一级菜单,二级菜单,三级菜单甚至更多层级的菜单,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • SpringBoot获取HttpServletRequest的3种方式总结

    SpringBoot获取HttpServletRequest的3种方式总结

    这篇文章主要给大家介绍了关于SpringBoot获取HttpServletRequest的3种方式,在Spring boot项目中经常要用到Servlet的常用对象如HttpServletRequest request,HttpServletResponse response,HttpSession session,需要的朋友可以参考下
    2023-08-08

最新评论