JavaScript — загрузка файла с использованием конечных точек облака Google в приложение Google App Engine

У меня есть приложение на Google App Engine, написанное на python, я использую это приложение в качестве сервера для моего веб-приложения, написанного на PHP, которое я использую в качестве клиента для вызова моего API на стороне сервера в GAE с использованием конечной точки javascript.

Я хочу загрузить файл из своего веб-приложения в приложение GAE, используя конечные точки облака Google. Я изучал хранилище BLOB-объектов, но это не сильно помогло.

Пожалуйста, предложите, что мне делать.

1

Решение

Вы должны использовать облачное хранилище для хранения ваших файлов, а не Blobstore.

Используйте GCS, потому что:

  • Google отходит от магазина
  • GCS предлагает больше функциональных возможностей, таких как acl, папки и многое другое.
  • Вы можете использовать имена файлов и интернет-магазин, например, обслуживание URL для изображений.
  • Вы можете создать URL-адреса для не изображений
  • GCS дешевый и имеет бесплатную корзину по умолчанию

Чтобы использовать GCS, вы должны использовать https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/

Вот пример в Java для использования этого API:

GcsService gcsService = GcsServiceFactory.createGcsService();
GcsFilename filename = new GcsFilename(CONSTANTES.BUCKETNAME, unique+".jpg");
GcsFileOptions options = new GcsFileOptions.Builder()
.mimeType("image/jpg")
.acl("public-read")
.build();
GcsOutputChannel writeChannel = gcsService.createOrReplace(filename, options);
1

Другие решения

РЕДАКТИРОВАТЬ: Это написано (моя ошибка), как будто вы были на Java. Не стесняйтесь использовать аналогичный шаблон для PHP на App Engine.

То, что другой пользователь написал о GCS, отвечает на вопрос хранения вашего вопроса — вам определенно следует использовать GCS — но что касается вашей идеи размещения данных формы в функции конечных точек, это определенно не рекомендуется. Вызовы API должны быть маленькими кусочками данных. API должен быть похож на бумажный самолетик, легко летящий к вашему серверу для запроса реальных данных.

Чтобы пользователи могли загружать файлы в GCS, нужно предоставить им страницу с формой загрузки файлов (enctype="multipart/form-data") где форма action Параметр — это URL для загрузки, созданный для создания шаблона страницы в вашем сервлете. doGet(HttpServletRequest req, HttpServletResponse resp) метод с использованием Функция клиентской библиотеки GCS createUploadUrl(). Вы можете использовать это так:

String uploadUrl = blobstoreService
.createUploadUrl("/upload",
UploadOptions.Builder.withGoogleStorageBucketName("my_bucket"));

Таким образом, вы можете получить URL загрузки для GCS, на который будет отправлен файл пользователя POST. Маршрут /upload это маршрут в вашем приложении, который будет перенаправлен после получения загрузки. Любые добавленные вами дополнительные параметры формы будут по-прежнему видны обработчику запросов ( doPost() метод сервлета), который вы определяете для этого маршрута.

Имея всю эту информацию, вы готовы приступить к отправке форм загрузки файлов своим пользователям, не беспокоясь о том, как это взаимодействует с конечными точками облака. Используйте конечные точки для определения вызовов API, необходимых вашему клиенту javascript / Android / iOS, а не для загрузки файлов.

0

По вопросам рекламы [email protected]