【问题标题】:Replacing the FileService Api to create a Blob file in server side替换 FileService Api 以在服务器端创建 Blob 文件
【发布时间】:2015-08-15 14:21:19
【问题描述】:

我正在使用 FileService Api 从服务器端将文件保存到 Blobstore,如下所示:

    FileService fileService = FileServiceFactory.getFileService();
    AppEngineFile file = null;
    file = fileService.createNewBlobFile(contentType, fileName);

    boolean lock = true;
    FileWriteChannel writeChannel = null;
    writeChannel = fileService.openWriteChannel(file, lock);

    ByteBuffer bb = ByteBuffer.wrap(FILE_BYTES);
    writeChannel.write(bb);
    writeChannel.closeFinally();
    BlobKey blobKey = fileService.getBlobKey(file);
    return blobKey.getKeyString();

但 FileService Api 将于今年 (2015 年) 7 月推出 File Api Service Turndown

我正在寻找替代方法来执行此操作。我需要从服务器端的 byte[] 创建一个文件并将其保存到 blobstore。

我知道并使用 createUploadUrl 选项从客户端上传文件并将其保存到 blobstore

    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
    url = blobstoreService.createUploadUrl("/upload", uploadOptions);

但我需要的是在服务器端创建和保存文件,就像 FileService Api 所做的那样。

我已经在迁移文档中搜索了 JAVA 并且没有其他选择。唯一的选择是通过带有 createUploadUrl

的 POST

任何帮助将不胜感激。感谢阅读。

【问题讨论】:

    标签: java google-app-engine gwt google-cloud-storage blobstore


    【解决方案1】:

    由于 Blobstore 即将永久关闭,您需要开始使用 Google Cloud Storage。

    Google Cloud Storage Client Library 与 App Engine 完全集成,可以轻松迁移到另一个 API。

    将对象保存到云存储后,您可以从对象名称开始生成 BlobKey。

    GcsFilename gcs_file = /* your uploaded file */;
    String cloudStorageURL = "/gs/" + gcs_file.getBucketName() + "/" + gcs_file.getObjectName();
    BlobstoreService bs = BlobstoreServiceFactory.getBlobstoreService();
    return bs.createGsBlobKey(cloudStorageURL);
    

    通过这种方式,您无需更改整个代码(可能还有数据存储),因为您一直使用 BlobKey 对象作为文件标识符。

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 2018-06-06
      • 2011-01-29
      • 1970-01-01
      • 2015-07-26
      • 2019-04-29
      相关资源
      最近更新 更多