如何使用Java及AccessToken将文件上传至GCP?
使用Java通过Access Token上传文件到Google Cloud Storage
1. 添加依赖
如果使用Maven管理项目,在pom.xml中引入Google Cloud Storage的依赖:
<dependency> <groupId>com.google.cloud</groupId> <artifactId>google-cloud-storage</artifactId> <version>2.32.0</version> <!-- 可替换为最新稳定版本 --> </dependency>
2. 核心上传代码
直接利用已有access token完成身份验证并上传文件:
import com.google.auth.oauth2.AccessToken; import com.google.auth.oauth2.GoogleCredentials; import com.google.cloud.storage.BlobId; import com.google.cloud.storage.BlobInfo; import com.google.cloud.storage.Storage; import com.google.cloud.storage.StorageOptions; import java.io.File; import java.io.IOException; public class GcsFileUploader { public static void main(String[] args) throws IOException { // 替换为你的实际参数 String accessToken = "你的access token字符串"; String targetBucket = "目标存储桶名称"; String gcsFileName = "文件在存储桶中的命名"; File localFile = new File("本地文件的完整路径"); // 用access token构建身份凭证 AccessToken token = new AccessToken(accessToken, null); // 若知道token过期时间,可传入对应的Date对象 GoogleCredentials credentials = GoogleCredentials.create(token); // 初始化GCS存储客户端 Storage storage = StorageOptions.newBuilder().setCredentials(credentials).build().getService(); // 构建存储对象信息并执行上传 BlobId blobId = BlobId.of(targetBucket, gcsFileName); BlobInfo blobInfo = BlobInfo.newBuilder(blobId).build(); storage.create(blobInfo, localFile.toPath()); System.out.println("文件已成功上传至GCS:" + gcsFileName); } }
关键注意事项
- Token有效性:确保使用的access token在上传时处于有效期内,若已知过期时间,建议在
AccessToken构造时传入对应的过期日期,客户端会自动处理凭证刷新逻辑。 - 权限检查:确认该access token拥有
storage.objects.create权限,否则会返回权限不足的错误。 - 大文件处理:如果上传大文件,建议使用流式上传方式,通过
storage.writer(blobInfo)获取写入流,分块写入避免内存溢出。
内容的提问来源于stack exchange,提问作者shivali
相关产品推荐
相关产品推荐

