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

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

我用过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/

相关文章:

java - OSX Java 系统托盘(菜单栏)

java - 为什么我可以达到的最大递归深度是不确定的?

java - 多次搜索 lucene 索引返回零结果

java - MPTT,如何使用JDO在Google App Engine中实现?

php - 检索要查看的 BLOB .bin 图像

javascript - Blob URL 上传到 firebase 存储

java - 优化大文件的扫描仪性能

python - 在 google app engine 上使用 python [xmlrpc frontend] 模块连接到 WordPress 博客

eclipse - 在 Eclipse 中重启谷歌应用引擎开发服务器的关键命令?

mysql - MySQL 中的 BLOB 和 TEXT 数据类型有什么区别?