我用过https://cloud.google.com/appengine/docs/java/blobstore/上传文件,我的文件将存储在 Google Cloud Storage 上的指定存储桶内。
结构
我将文件存储在云存储中,并将其 BlobKey
保存在某个托管位置,当我需要提供服务时,我会使用
BlobKey blobKey = service.createGsBlobKey(blobString);
service.serve(blobKey, response);
我的要求
我希望为用户提供一个功能,以便用户可以创建该文件的副本。我不知道如何做到这一点。如果我能够获取原始 byte[]
并将其存储回云存储,会对我有帮助吗? api好像没有这样的方法。
最佳答案
您从 GcsServiceFactory
类开始,如 https://cloud.google.com/appengine/docs/java/googlecloudstorageclient/javadoc/com/google/appengine/tools/cloudstorage/GcsServiceFactory 中所述。 ,并调用 createGcsService
的静态方法重载之一来获取接口(interface) 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)
所以本质上它只是存储桶名称和其中的对象名称。
关于java - 复制云存储文件(创建文件的副本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29080337/