Как сделать обработчик загрузки в AppEngine для объекта, загруженного в Google Cloud Storage с помощью API Blobstore
Вы можете создать URL для загрузки внутри Google App Engine с помощью API Blobstore следующим образом:
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
String callbackUrl = "/imageApi/imageUploaded";
String uploadUrl = blobstoreService.createUploadUrl(callbackUrl,
UploadOptions.Builder.withGoogleStorageBucketName("myBucket"));
Но как мне тогда, внутри App Engine, создать метод Java для обработки загрузки? Как это выглядит и как я могу прочитать имя объекта загруженного файла, а что нет?
Я смотрел на объявление об этом в документах, но там действительно нет никакого кода, объясняющего, как это сделать.
Примечание. Я использую конечные точки облака, но они должны быть похожими.
1 ответ
Решение
Вам нужно создать сервлет, который сопоставлен с вашим обработчиком "/blob". Что-то вроде этого:
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Map<String, List<FileInfo>> files = blobstoreService.getFileInfos(request);
List<FileInfo> info = files.get("uploadFormElement");
for (FileInfo i : info) {
if (i != null) {
String objectName = i.getGsObjectName();
long size = i.getSize());
// if you want to return object name to the client:
resp.getWriter().print(objectName);
}
}
}