Java实现Google cloud storage 文件上传,Google oss

news2024/12/25 23:47:01

storage 控制台位置
在这里插入图片描述创建一个bucket

在这里插入图片描述

点进bucket里面,权限配置里,公开访问,在互联网上公开,需要配置角色权限
在这里插入图片描述
新增一个访问权限 ,账号这里可以模糊搜索,
在这里插入图片描述
角色配置
在这里插入图片描述
在这里插入图片描述
给allUser配置俩角色就可以出现 在互联网上公开.

配置完点保存就可以了。
在这里插入图片描述

下载json文件,找到服务账号

在这里插入图片描述

账号
在这里插入图片描述
选择角色
在这里插入图片描述
下载json文件

在这里插入图片描述

上传方法

package com.jeesea.manage.utils;

import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.storage.*;
import org.springframework.core.io.ClassPathResource;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;

public class GoogleStorageUtils {

    // 存储桶名称
    static String bucketName = "mhxq";

    public static String upload(MultipartFile file , String objectName,String contentType){
        try {
           //json文件放到了 resources 下面   
            // 从resources目录中加载JSON密钥文件的输入流并确保资源的正确关闭
            try (InputStream inputStream = new ClassPathResource("key.json").getInputStream()) {
                // 初始化Google Cloud Storage服务
                Storage storage = StorageOptions.newBuilder().setCredentials(GoogleCredentials.fromStream(inputStream)).build().getService();

                // 上传文件
                BlobId blobId = BlobId.of(bucketName, objectName);
                BlobInfo blobInfo = BlobInfo.newBuilder(blobId).build();
                Blob blob = storage.create(blobInfo, file.getBytes());
                //修改已经上传的文件类型为 image/jpg
                blob.toBuilder().setContentType(contentType).build().update();

                // 返回文件访问链接
                return "https://storage.googleapis.com/"+bucketName +"/"+ objectName ;
            }
        } catch (IOException e) {
            e.printStackTrace();
            return "上传文件失败";
        }

    }

    /**
     * 上传图片到 Google Cloud storage
     * @param file
     * @param objectName
     * @return
     */
    public static String uploadImg(MultipartFile file , String objectName){
      return  upload(file , objectName , "image/jpg");
    }

    /**
     * 上传mp4视频到 Google Cloud storage
     * @param file
     * @param objectName
     * @return
     */
    public static String uploadVideo(MultipartFile file , String objectName){
        return  upload(file , objectName , "video/mp4");
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/842714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文水爱心帮扶开展——情系困境 高温天里“送关爱”

为了困境儿童有个健康、快乐、平等、和谐的成长环境,在社会组织党委的领导下,文水县妇联、县爱心帮扶志愿者协会及中志协应急委文水服务队联合开展新时代文明实践活动--为困境儿童送关爱。 8月6日上午九点,在文水火车站广场,文水县…

解决Vue+Element UI使用el-dropdown(下拉菜单)国际化时菜单label信息没有刷新的情况

说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 问题描述 在默认中文时,点击布局大小下拉菜单正常显示中文,此时切换至英文时,再次点击下拉菜单,还…

Linux安装mysql报错

用rpm安装mysql时报错如下: 解决: yum install -y libc.so.6 yum install -y libaio.so.1再次安装即可:

java,python,c++有什么区别,python java c c++区别

大家好,给大家分享一下java,python,c有什么区别,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 从这四种语言的难度、受欢迎度还有作用以及优点缺点给楼主做一个全面的分析,我们可以从中了解其区别,以及…

如何查询多级菜单(采用递归的方法)

应用场景 1.京东 京东的页面就是这么显示的在家用电器下面有电视.空调.洗衣机然后再电视下面又有全面屏电视.教育电视等等 2.我们的后端管理系统 我们后端在页面上显示的很多也是通过层级目录的显示出来。 如何实现 1.准备数据库 我们这里parent_id为0的为我们的一级菜单 …

美国地区TikTok直播电商SOP(附下载)

关于报告的所有内容,公众【营销人星球】获取下载查看 核心观点 随着互联网的普及和社交媒体的兴起,网红直播已经成为了一种新型的娱乐方式和商 业模式。越来越多的人开始关注网红直播,希望通过这种方式获得更多的粉丝和商业机会。但是&…

防勒索病毒

随着勒索软件攻击在2023年的激增,网络安全已成为当今最重要的议题之一。根据区块链分析公司Chainaanalysis的最新报告,勒索软件攻击已成为唯一呈增长趋势的基于加密货币的犯罪行为,勒索金额更是比一年前增加了近1.758亿美元,达到4…

软件设计师(七)面向对象技术

面向对象: Object-Oriented, 是一种以客观世界中的对象为中心的开发方法。 面向对象方法有Booch方法、Coad方法和OMT方法等。推出了同一建模语言UML。 面向对象方法包括面向对象分析、面向对象设计和面向对象实现。 一、面向对象基础 1、面向对象的基本…

CentOS 7 构建 LVS-DR 群集 nginx负载均衡

1、基于 CentOS 7 构建 LVS-DR 群集。 DS(Director Server):DIP 192.168.231.132 & VIP 192.168.231.200 [root132 ~]# nmcli c show NAME UUID TYPE DEVICE ens33 c89f4a1a-d61b-4f24-a260…

云曦暑期学习第四周——流量、日志分析

1 日志分析 1.1 What is 日志 日志,是作为记录系统与服务最直接有效的方法。在日志中,可以发现访问记录以及发现攻击线索。日志分析也是最常用的分析安全 事件所采用的途径。系统日志和 web 日志分别记录了不同内容,为分析攻击提供了有效证…

C#--设计模式之单例模式

单例模式大概是所有设计模式中最简单的一种,如果在面试时被问及熟悉哪些设计模式,你可能第一个答的就是单例模式。 单例模式的实现分为两种: 饿汉式:在静态构造函数执行时就立即实例化。懒汉式:在程序执行过程中第一…

RaabitMQ(三) - RabbitMQ队列类型、死信消息与死信队列、懒队列、集群模式、MQ常见消息问题

RabbitMQ队列类型 Classic经典队列 这是RabbitMQ最为经典的队列类型。在单机环境中,拥有比较高的消息可靠性。 经典队列可以选择是否持久化(Durability)以及是否自动删除(Auto delete)两个属性。 Durability有两个选项,Durable和Transient。 Durable表…

mysql高级三:sql性能优化+索引优化+慢查询日志

内容介绍 单表索引失效案例 0、思考题:如果把100万数据插入MYSQL ,如何提高插入效率 (1)关闭自动提交,只手动提交一次 (2)删除除主键索引外其他索引 (3)拼写mysql可以执…

matlab智能算法程序包89套最新高清录制!matlab专题系列!

关于我为什么要做代码分享这件事? 助力科研旅程! 面对茫茫多的文献,想复现却不知从何做起,我们通过打包成品代码,将过程完善,让您可以拿到一手的复现过程以及资料,从而在此基础上,照…

CNN成长路:从AlexNet到EfficientNet(02)

一、说明 在~10年的深度学习中,进步是多么迅速!早在 2012 年,Alexnet 在 ImageNet 上的准确率就达到了 63.3% 的 Top-1。现在,我们超过90%的EfficientNet架构和师生训练(teacher-student)。 二、第一阶段 …

白盒测试怎么做

一、什么是白盒测试 白盒测试又称结构测试、逻辑驱动测试或基于代码的测试。 白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,即清楚盒子内部的东西以及里面是如何运作的。 "白盒"法需要测试者…

Spring学习笔记——2

Spring学习笔记——2 1、Bean的基本注解开发1.1、注解版本和Component简介1.2、Component使用1.3、Component的三个衍生注解 二、Bean依赖注入注解开发2.1、依赖注入相关注解2.2、Autowired扩展 三、非自定义Bean注解开发四、Bean配置类的注解开发五、Spring注解的解析原理六、…

解决Vue+Element UI使用表单rules国际化时From表单验证信息不能实时更新

说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 博主在工作之余开始进行自动化测试平台的开发,虽然已经996一个月了但是还是在使劲挤时间做这件事情,目前平台使用前端框架vu…

mysql再docker中运行,直接在实体机上运行mysql命令初始化数据库数据

背景 项目上我们使用docker安装mysql,项目启动的时候需要利用sql语句初始化数据。 直接在实体上是识别不到mysql命令的。 实现方式 实现方式1:在docker容器内部执行sql语句 1. 将sql文件上传到容器内 docker cp /root/1.sql d5:/home/ 说明&#…

日期格式化的最佳实践:如何在Java中处理日期格式化

文章目录 前言一、使用format()方法二、使用注解JsonFormat三、使用消息转换器1.定义用户类2.重写DateSerializer 方法3.定义对象映射器:4.定义消息转换器5.调用测试 总结 前言 当涉及到日期格式化时,了解正确的方式和最佳实践是至关重要的。 日期格式化…