如何使用Java将媒体(图像,视频)上传到Google云端存储

时间:2014-11-22 19:21:18

标签: google-app-engine

使用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实现?

我非常感谢您的时间,并期待您的回复。

2 个答案:

答案 0 :(得分:2)

答案 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中提到了大多数这些方法。我刚刚删除了实现中的混乱。希望这会有所帮助。