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

Copy Cloud Storage File ( create a duplicate of the file )

我已经使用 https://cloud.google.com/appengine/docs/java/blobstore/ 上传了文件,我的文件正在存储在 Google Cloud Storage 的指定存储桶中。

结构

我将文件存储在云存储中并将其 BlobKey 保存在某处受管理的地方,当我需要提供它时我使用

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

我的要求

我希望为用户提供一个功能,以便用户可以创建该文件的副本。我不知道如何做到这一点。如果我能够获取原始 byte[] 并存储回云存储,这对我有帮助吗? api好像没有这个方法

您从 GcsServiceFactory class 开始,如 https://cloud.google.com/appengine/docs/java/googlecloudstorageclient/javadoc/com/google/appengine/tools/cloudstorage/GcsServiceFactory , and call one of its static method overloads of createGcsService to obtain an instance of interface GcsService, which, in turn, is documented at 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) 

所以本质上它只是存储桶名称和其中的对象名称。