复制云存储文件(创建文件的副本)

时间:2015-03-16 15:13:25

标签: java google-app-engine blob google-cloud-storage

我已使用https://cloud.google.com/appengine/docs/java/blobstore/上传文件,我的文件存储在指定存储区内的Google云端存储中。

结构

我将文件存储在云端存储中,并将其BlobKey保存在某个地方,当我需要提供服务时,我使用

BlobKey blobKey = service.createGsBlobKey(blobString);
service.serve(blobKey, response);

我的要求

我希望为用户提供一个功能,以便用户可以创建该文件的副本。我对如何做到这一点毫无头绪。如果我能够获得原始byte[]并存储回云存储,它会对我有帮助吗? api似乎没有这样的方法。

1 个答案:

答案 0 :(得分:1)

您从GcsServiceFactory类开始,如https://cloud.google.com/appengine/docs/java/googlecloudstorageclient/javadoc/com/google/appengine/tools/cloudstorage/GcsServiceFactory所述,并调用createGcsService的一个静态方法重载来获取接口GcsService的实例,反过来,记录在https://cloud.google.com/appengine/docs/java/googlecloudstorageclient/javadoc/com/google/appengine/tools/cloudstorage/GcsService

后者的方法copy,请参阅https://cloud.google.com/appengine/docs/java/googlecloudstorageclient/javadoc/com/google/appengine/tools/cloudstorage/GcsService#copy(com.google.appengine.tools.cloudstorage.GcsFilename,com.google.appengine.tools.cloudstorage.GcsFilename),是您正在寻找的方法。

GcsFilename,您需要传递给copy方法的两个实例,记录在https://cloud.google.com/appengine/docs/java/googlecloudstorageclient/javadoc/com/google/appengine/tools/cloudstorage/GcsFilename - 它非常简单,正如您可以从中看到的那样它的构造函数:

GcsFilename(java.lang.String bucketName, java.lang.String objectName) 

基本上它只是桶名和其中的对象名。