一文详解如何使用Google Cloud Storage作为文件存储服务

本文详细介绍了如何配置和使用谷歌CloudStorage作为图片存储服务。从创建服务账号和密钥,到设定存储桶的访问权限,再到Java代码实现文件上传与访问,一步步解析了整个流程。通过这个教程,读者可以学会如何实现在项目中集成CloudStorage,并生成公开访问的图片URL。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何使用谷歌 Cloud Storage作为项目的图片存储服务

在使用Cloud Storage服务之前,需要在谷歌项目中创建服务账号

创建服务账号

1.在控制台中打开导航菜单——API和服务——凭据页面
在这里插入图片描述
2.点击创建凭据——服务账号
在这里插入图片描述
3.填写服务账号信息
在这里插入图片描述

我们为服务账号添加默认Owner角色权限
在这里插入图片描述
这里填写你自己的谷歌账号,也就是可以用你自己的谷歌账号可以对该服务账号进行修改权限等操作
在这里插入图片描述
创建服务账号以后,下一步就要为服务账号创建密钥了,密钥是我们访问Cloud Storage的API的凭据

为服务账号创建json密钥

上一步创建服务账号后,在服务账号的页面就可以看到新创建的服务账号了,这里我们点击该服务账号的——管理密钥
在这里插入图片描述
进入密钥管理页面后,我们点击 添加密钥——创建新密钥
在这里插入图片描述
在这里插入图片描述
点击创建后,就会创建json格式的密钥了,并且也会自动将密钥下载到我们的本机
在这里插入图片描述

Cloud Storage控制台创建存储桶

存储桶是作为存放我们的文件的容器,我们所有的文件上传成功后都会在我们创建的存储桶容器中

1.创建存储桶
在这里插入图片描述
这里要注意,数据存储位置和默认存储类别将影响访问速度,要根据提示选择适合自己项目的位置和存储类别
在这里插入图片描述
2.修改存储桶的访问权限
在这里插入图片描述
进入存储桶的详情,在权限页面,要修改该存储桶的访问权限,首先设置存储桶为“公开访问”状态和“精细控制”状态,第二要添加“allUsers”账号,并且权限设置为Storage Legacy Object Reader 和 Storage Object Viewer, 表示任何人都拥有存储桶的查看权限和里边单个文件的查看权限

写Demo进行测试

这里我们使用java进行操作,写一个最常用的图片上传和访问的功能

1.第一步我们要做的是先引入Google Cloud Storage的相关依赖

 <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.google.cloud</groupId>
                <artifactId>libraries-bom</artifactId>
                <version>22.0.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>google-cloud-storage</artifactId>
        </dependency>
    </dependencies>

下面是详细代码:

package com.google.test;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.storage.*;
import com.google.common.collect.Lists;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class GoogleFileUtil {
    public static void main(String[] args) throws IOException {
        String filepath = uploadFile("测试", "vue_jinbeiwallet_com");
        System.out.println("公开访问地址是::::" + filepath);
    }

    public static String uploadFile(String fileName,String bucketName) throws IOException {
        //要上传的本地文件的绝对路径
        String filePath = "D:/imgs/wallhaven/钻石/1krllv.jpg";

        //读取本地存储的服务账号的json密钥,拿到该服务账号的权限
        GoogleCredentials credentials= GoogleCredentials.fromStream(new FileInputStream("D:/tity/linear-stock-325210-33d0c8edd2cc.json"))
                .createScoped(Lists.newArrayList("https://www.googleapis.com/auth/cloud-platform"));

        //创建服务账号对应的操作对象
        Storage storage = StorageOptions.newBuilder().setCredentials(credentials).build().getService();

        // 将本地指定路径的文件转换为字节
        byte[] bytes = Files.readAllBytes(Paths.get(filePath));

        //上传文件图片到指定的存储桶中
        BlobId blobId=BlobId.of(bucketName,fileName);
        BlobInfo blobInfo=BlobInfo.newBuilder(blobId).build();
        Blob blob = storage.create(blobInfo, bytes);

        //修改已经上传的文件类型为 image/jpg
        blob.toBuilder().setContentType("image/jpg").build().update();
        
        //返回公开访问的地址
        return "https://storage.googleapis.com/" + bucketName + "/" + fileName;
    }

}

以上代码需要注意的是,第一个是本地存放json密钥的绝对路径,在liunx系统上写法跟windows不一样,需要修改
第二是需要修改上传后的文件类型,要根据自己上传文件的类型进行修改,如果不修改,默认都是application/octet-stream,,这样的话访问公开地址就会变成下载地址

下面我们来看一下运行结果:
在这里插入图片描述
在这里插入图片描述

成功上传并且生成公开访问地址,在实际运用中,我们一般会将该访问地址入库,在前端需要的时候请求并返回该地址就好了

如果觉得对你有用,记得动动你发财的小手,帮我点赞,收藏,分享,谢谢!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值