如何读取上传的 blob 的内容?

How to read the contents of an uploaded blob?

我正在使用 Blobstore 使用此文档上传一个简单的文本文件:https://cloud.google.com/appengine/docs/java/blobstore/#Java_Uploading_a_blob。我从文档中了解到如何保存 blob 并将其提供给用户,但我不明白处理文件上传的 servlet 如何实际读取文本文件的内容?

在 python 中有 BlobReader class 可以帮助您做到这一点。 (https://cloud.google.com/appengine/docs/python/blobstore/blobreaderclass)

不过您似乎在使用 Java。 Java 中似乎没有等效的 class。我要做的是使用 GCS 作为 blobstore (https://cloud.google.com/appengine/docs/java/blobstore/#Java_Using_the_Blobstore_API_with_Google_Cloud_Storage) 的支持。这样上传到 blobstore 的文件将可以在 GCS 中访问。

然后您可以使用 Java 的 GCS 客户端库读取文件。

我找到了答案。这是代码:

Map<String, List<FileInfo>> infos = blobstoreService.getFileInfos(request);
Long fileSize = infos.get("myFile").get(0).getSize();
Map<String, List<BlobKey>> blobKeys = blobstoreService.getUploads(request);
byte[] fileBytes = 
        blobstoreService.fetchData(blobKeys.get("myFile").get(0), 0, fileSize);
String input = new String(fileBytes);