GAE:以编程方式访问blobstore内容?

时间:2012-12-26 01:07:30

标签: java google-app-engine blobstore

我的用例:我不使用blobstore上传和下载文件。我使用blobstore存储程序正在创建的非常大的字符串。通过持久存储blob的路径,我可以稍后再次加载该字符串(参见documentation

我的问题:是否有更简单的方法来访问blob内容而无需存储路径? BlobstoreService只允许我直接提供给HttpServletReponse。

2 个答案:

答案 0 :(得分:0)

您只需要存储BlobKey - 从不需要存储路径(文件与否)。

要访问blob的内容:

BlobstoreService blobStoreService = BlobstoreServiceFactory.getBlobstoreService();
String myString =
   new String(blobStoreService.fetchData(blobKey, 0, BlobstoreService.MAX_BLOB_FETCH_SIZE-1);

编辑: 如果你有一个很长的字符串,你可以使用任何标准的方法将字节数组读入字符串,方法是从循环中的blob中获取数据。

答案 1 :(得分:0)

我想当你说“坚持存储blob的路径”时,你的意思是BlobKey

FileService允许您直接访问blob数据:

// Get a file service
FileService fileService = FileServiceFactory.getFileService();

// Get a file backed by blob
AppEngineFile file = fileService.getBlobFile(blobKey)

// get a read channel
FileReadChannel readChannel = fileService.openReadChannel(file, false);

// Since you store a String, I guess you want to read it a such
BufferedReader reader = new BufferedReader(Channels.newReader(readChannel, "UTF8"));
// Do this in loop unitil all data is read
String line = reader.readLine();