我已使用https://cloud.google.com/appengine/docs/java/blobstore/上传文件,我的文件存储在指定存储区内的Google云端存储中。
结构
我将文件存储在云端存储中,并将其BlobKey
保存在某个地方,当我需要提供服务时,我使用
BlobKey blobKey = service.createGsBlobKey(blobString);
service.serve(blobKey, response);
我的要求
我希望为用户提供一个功能,以便用户可以创建该文件的副本。我对如何做到这一点毫无头绪。如果我能够获得原始byte[]
并存储回云存储,它会对我有帮助吗? api似乎没有这样的方法。
答案 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)
基本上它只是桶名和其中的对象名。