使用Google Cloud Storage API Java将媒体文件上传到Google Cloud Storage后,我现在面临一个问题。更具体地说,GCS API Java示例只是帮助我们将文本文件上传到Google Bucket,但对媒体文件没有用。我还看到了一些来自故障单的讨论:Written file not showing up in Google Cloud Storage团队建议使用Python编写的gsutil工具。我也没有使用blobstore
我的问题是如何处理以下要求: - 创建和删除存储桶。 - 上传,下载和删除对象(如媒体文件)。 - 列出水桶和物体。 - 移动,复制和重命名对象。
通过Java实现?
我非常感谢您的时间,并期待您的回复。
答案 0 :(得分:2)
createUploadUrl
,该Google Cloud Storage Java Client Library可配置为在Google云端存储中存储blob。同样,要下载,您可以使用Bucket名称+对象名称创建createGsBlobKey
,然后Blobstore服务可以提供该名称。答案 1 :(得分:1)
当我不得不处理各种文件(包括图像和视频等媒体对象)时,我遇到了类似的要求。这是我根据GitHub上的Google Cloud Examples项目的官方文档实现的实现: Source Link
上传文件
public boolean uploadFile(String filePath, byte[] file) {
try {
setDefaultStorageCredentials();
storage.create(BlobInfo.newBuilder(bucketName, filePath).build(),
new ByteArrayInputStream(file));
return true;
} catch (Exception e) {
return false;
}
}
下载文件
public byte[] downloadFile(String filePath) throws FileNotFoundException, IOException {
setDefaultStorageCredentials();
return storage.get(bucketName).get(filePath).getContent();
}
删除文件
public boolean deleteFile(String filePath){
setDefaultStorageCredentials();
return storage.delete(storage.get(bucketName).get(filePath).getBlobId());
}
使用签名网址提供对文件的临时访问
public String getTemporaryFileLink(String filePath) throws Exception{
setDefaultStorageCredentials();
Blob blob = storage.get(bucketName).get(filePath);
String blobName = blob.getName();
URL signedUrl = storage.signUrl(BlobInfo.newBuilder(bucketName, blobName).build(), 5,TimeUnit.MINUTES);
return signedUrl.toExternalForm();
}
此Google Github project中提到了大多数这些方法。我刚刚删除了实现中的混乱。希望这会有所帮助。