Как сделать обработчик загрузки в 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);
        }
    }
}
Другие вопросы по тегам