1

借助 Google 文档将文件写入 blob 存储

我可以通过以下方式将文件存储在 Google Cloud 中,

 //My servlet Class
  private StorageService storage = new StorageService();
  FileService fileService = FileServiceFactory.getFileService();
  AppEngineFile file = fileService.createNewBlobFile(mime, fileName);
  boolean lock = true;
  FileWriteChannel writeChannel = fileService.openWriteChannel(file, lock);
  byte[] b1 = new byte[BUFFER_SIZE];
  int readBytes1;
  storage.init(fileName, mime); // Calling my Java Class Here
  while ((readBytes1 = is1.read(b1)) != -1) {
  writeChannel.write(ByteBuffer.wrap(b1, 0, readBytes1));
  storage.storeFile(b1, readBytes1);}
  writeChannel.closeFinally();

我有一个存储 java 类来将数据存储在下面的谷歌云中,

//My Storage Class 
  public class StorageService {
  public static final String BUCKET_NAME = "MyBucket";  
  public void init(String fileName, String mime) throws Exception {
  GSFileOptionsBuilder builder = new GSFileOptionsBuilder().setAcl("public_read").setBucket(BUCKET_NAME).setKey(fileName).setMimeType(mime); 
  AppEngineFile writableFile = fileService.createNewGSFile(builder.build());
boolean lock = true;
writeChannel = fileService.openWriteChannel(writableFile, lock);
bos = new BufferedOutputStream(Channels.newOutputStream(writeChannel));
public void storeFile(byte[] b, int readSize) throws Exception { 
 bos.write(b,0,readSize);
bos.flush();
}}

从上面的参考资料中,我可以将文件直接存储在谷歌云中。但我需要使用文件服务将这些文件存储为 blob 值。

任何人都可以建议我一个想法。

您的帮助将不胜感激。

4

1 回答 1

0

您是否将 appengine 服务帐户添加到 Google API 控制台项目中?如果您还没有完成,您应该准备 Google API 控制台项目。

  1. 在 GAE 管理控制台的“应用程序设置”选项卡上确认您的 appengine 服务帐户
  2. 在Google API 控制台上创建新项目。或为您现有的存储桶打开 API 控制台项目。
  3. 在“服务”选项卡中启用“谷歌云存储”。
  4. 在 API 控制台“团队”选项卡上将 appengine 服务帐户添加为团队。
于 2013-01-25T15:14:24.803 回答