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

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.mfbz.cn/a/63346.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【GPT-3 】创建AI博客写作工具

一、说明 如何使用OpenAI API,GPT-3和Python创建AI博客写作工具。 在本教程中,我们将从 OpenAI API 中断的地方继续,并创建我们自己的 AI 版权工具,我们可以使用它使用 GPT-3 人工智能 (AI) API 创建独特的…

Crond和sudo

目录 前言 一、Crond (一)、一次性任务 (二)、周期性任务 1./etc/crontab中加入 2.使用crontab命令编辑计划任务 二、sudo 1.sudo概念 2.sudo提权 总结 前言 crond是linux下用来周期性的执行某种任务或等待处理某些事件的…

今天小编继续给大家分享五款高效的电脑宝藏软件

目录 1、keytweak 2、ScreenToGif 3、Greenshot截屏工具 4、GIMP 5、HandBrake 1、keytweak keytweak 简单来说就是一个键盘按键修改器,说白了就是一个键盘按键重映射的软件。比如你键盘上的Q不好用了,你可以更换成一个不常见的按键来代替Q键&#x…

STM32 CubeMX USB_(HID 鼠标和键盘)

STM32 CubeMX STM32 CubeMX USB_HID(HID 鼠标和键盘) STM32 CubeMX前言 《鼠标》一、STM32 CubeMX 设置USB时钟设置USB使能UBS功能选择 二、代码部分添加代码鼠标发送给PC的数据解析实验效果 《键盘》STM32 CubeMX 设置(同上)代码…

探索PostgreSQL的新功能:最新版本更新解析

PostgreSQL作为一种强大而开源的关系型数据库管理系统,不断在不断进化和改进。每一次的版本更新都带来了更多功能和改进,让用户在处理大规模数据和复杂查询时体验更好的性能和功能。在本文中,我们将深入探索PostgreSQL的最新版本更新&#xf…

系统架构设计高级技能 · 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】

系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估(二)【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…

小黑子—JavaWeb:第六章 - Filter、Listener、AJAX与JSON

JavaWeb入门6.0 1. Filter1.1 Filter快速入门1.2 Filter执行流程1.3 Filter拦截路径配置1.4 Filter过滤器链1.5 案例登录验证 2. Listener2.1 ServletContextListener使用 3. AJAX3.1 AJAX 快速入门3.2 案例 验证用户名是否存在3.3 Axios 异步框架3.3.1 Axios 快速入门3.3.2 Ax…

涂鸦智能获Matter Non-VID Scoped PAA资质 助力开发者拥抱Matter生态

今年5月,全球化IoT开发者平台涂鸦智能(NYSE: TUYA,HKEX: 2391)正式生成Tuya Matter PAA密钥根,并于7月,成功通过了连接标准联盟和第三方MA机构审查而上线。自此,涂鸦正式成为全球同时提供支持Ma…

Docker 发布一个springboot项目

文章目录 1、新建SpringBootDemo项目并打包2、使用Dockerfile打包(基础用法)进一步maven源码打包法 3、更进一步(maven插件打包)docker-maven-pluginspring-boot-maven-plugin前提条件本地环境配置项目环境配置maven插件打包运行校…

pycharm出现python test运行报错(pytest模式)

pycharm出现python test运行报错 一、python test 执行代码报错二、删除运行配置三、修改pycharm默认配置为 unittests四、成功! 一、python test 执行代码报错 二、删除运行配置 三、修改pycharm默认配置为 unittests 四、成功!

多语言一键铺货跨境电商平台快速开发(java开源)

要搭建一个多语言一键铺货跨境电商平台,可以参考以下步骤: 1. 确定需求:首先,明确平台的功能需求,包括多语言支持、一键铺货功能、跨境支付等。 2. 选择适合的开源项目:选择一个适合的Java开源电商平台项…

C语言系列之原码、反码和补码

一.欢迎来到我的酒馆 讨论c语言中,原码、反码、补码。 目录 一.欢迎来到我的酒馆二.原码 二.原码 2.1在计算机中,所有数据都是以二进制存储的,但不是直接存储二进制数,而是存储二进制的补码。原码很好理解,就是对应的…

SpringBoot + Docker 实现一次构建到处运行~

一、容器化部署的好处 图片 Docker 作为一种新兴的虚拟化方式,它可以更高效的利用系统资源,不需要进行硬件虚拟以及运行完整操作系统等额外开销。 传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行…

vue项目实战-脑图编辑管理系统kitymind百度脑图

前言 项目为前端vue项目,把kitymind百度脑图整合到前端vue项目中,显示了脑图的绘制,编辑,到处为json,png,text等格式的功能 文章末尾有相关的代码链接,代码只包含前端项目,在原始的…

Stephen Wolfram:ChatGPT 的训练

The Training of ChatGPT ChatGPT 的训练 OK, so we’ve now given an outline of how ChatGPT works once it’s set up. But how did it get set up? How were all those 175 billion weights in its neural net determined? Basically they’re the result of very large…

opencv基础-38 形态学操作-闭运算(先膨胀,后腐蚀)cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

闭运算是先膨胀、后腐蚀的运算,它有助于关闭前景物体内部的小孔,或去除物体上的小黑点,还可以将不同的前景图像进行连接。 例如,在图 8-17 中,通过先膨胀后腐蚀的闭运算去除了原始图像内部的小孔(内部闭合的…

在Raspberry Pi 4上安装Ubuntu 20.04 + ROS noetic(不带显示器)

在Raspberry Pi 4上安装Ubuntu 20.04 ROS noetic(不带显示器) 1. 所需设备 所需设备: 树莓派 4 B 型 wifi microSD 卡:最小 32GB MicroSD 转 SD 适配器 (可选)显示器,鼠标等 2. 树莓派…

【山河送书第五期】:《码上行动:利用Python与ChatGPT高效搞定Excel数据分析》参与活动,送书三本!!

《码上行动:利用Python与ChatGPT高效搞定Excel数据分析》 前言内容提要本书亮点购买链接参与方式往期赠书回顾: 前言 在过去的 5 年里,Python 已经 3 次获得 TIOBE 指数年度大奖,这得益于数据科学和人工智能领域的发展&#xff0…

【转】金融行业JR/T0197-2020《金融数据安全 数据安全分级指南》解读

原文链接:金融行业JR/T0197-2020《金融数据安全 数据安全分级指南》解读 《金融数据安全 数据安全分级指南》 解 读 随着IT技术的发展,银行的基础业务、核心流程等众多事务和活动都运营在信息化基础之上,金融机构运行过程中产生了大量的数字…