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");
}
}