1

我正在设计一个允许用户上传 PDF 文件的 GAE 应用程序,我将把它保存到 GAE Blobstore。

我需要能够在这些 blobstored 文件中“删除 n'交换”文本块。也就是说,我需要能够从文件(存储在 Blobstore 中)中挑选出特定的句子,并将其替换为不同的文本。

假设我有一个 PDF 文件,并且我知道从文件中的第 505 个字节/字符开始,有一句话:

树林很可爱,又黑又深。

我想用以下内容替换(drop n' swap)那句话:

但我有要遵守的承诺。

然后我知道我想用我的新字符串替换字节 505 到 541(树林很可爱,黑暗而深沉。 )。

所以我问:这可能吗?我看到 Blobstore API 允许您从存储的 blob 中读取特定的字符段:

// Now contains: "The woods are lovely, dark and deep."
String toDropNSwap = blobStoreService.fetchData(blobKey, 505, 541);

toDropNSwap = "But I have promises to keep.";

// This doesn't exist, just an example:
blobstoreService.dropAndSwap(505, 541, toDropNSwap);

但我不明白如何用另一段字节替换一段字节,特别是如果新段的大小不同。还有一件事:我将处理最大 20MB 的文件。提前致谢。

4

1 回答 1

3

Blob 是不可变的:

Blob 在创建后无法修改,但可以删除。每个 blob 都有一个相应的 blob 信息记录,存储在数据存储中,提供有关 blob 的详细信息,例如其创建时间和内容类型。您可以使用 blob 键来获取 blob 信息记录并查询它们的属性。

所以你正在寻找的东西是不可能的。您将不得不删除并创建一个新的 blob。

于 2013-02-24T13:19:45.357 回答