Сначала позвольте мне сказать,
Думаю, я прочитал все сообщения об обмене стеками, которые казались относящимися к этой теме. *
Что я пытаюсь сделать:
- Я пытаюсь разрешить определенным пользователям отправлять изображения в облачное хранилище Google через форму на моем сайте.
- Другое требование, наряду с отправкой этого изображения в облачное хранилище, заключается в том, что мне нужно создать модель этого изображения в хранилище данных с соответствующими атрибутами.
Я не уверен, что лучше всего сделать, потому что ...
Подходы, о которых я читал:
Есть несколько подходов к переносу изображений в облачное хранилище:
- через API-интерфейс blobstore
- через клиент Python для облачного хранилища: https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/#Python_About_the_client_library
- через rest api (я рассматривал подход json) https://cloud.google.com/storage/docs/json_api/v1/how-tos/upload#simple
Я прочитал много противоречивой информации,
и я так много читал, что не могу понять,
тем не мение,
Думаю, разрешение было:
Для blobstore:
- Метод blobstore.uploadtocloudstoragethingmethod может иметь или не иметь предельный размер загрузки файла (нет, это не фактическое имя вызова или метода) 2. Метод blobstore звучал так, как будто он будет постепенно сокращен?
Для Jason API:
Однако клиентская библиотека включает оптимизацию App Engine, поэтому использование REST API может потребовать дополнительного времени на разработку. Примечание. Сервер разработки App Engine поддерживает клиент облачного хранилища. Он не поддерживает REST API.
Для клиентской библиотеки:
Я не знаю. Пока все выглядит нормально. Вот метод, который я собираюсь использовать:
cloudstorage.open (filename, mode = 'r', content_type = None, options = None, read_buffer_size = storage_api.ReadBuffer.DEFAULT_BUFFER_SIZE, retry_params = None)
В режиме чтения (r) открывает указанный объект облачного хранилища для чтения. В режиме записи w, если указанный файл существует, он открывает его для перезаписи (добавление не поддерживается). Если файл не существует, он создается в указанном сегменте.
Что я использую:
- Google App Engine
- Python (для обработчиков, моделей и т. Д.)
- angularjs и jquery (интерфейс)
- json иногда (бэкэнд)
- Шаблон GAE (не спрашивайте)
Что я собираюсь делать:
- Получите изображение пользователя:
Итак, я нашел эту форму, которую я протестировал. Он берет файл с вашего компьютера:
<form action="<?php echo $upload_url?>" enctype="multipart/form-data"
method="post">
Files to upload: <br> <input type="file" name="uploaded_files" size="40"> <input type="submit" value="Send">
(Нет, я не могу использовать php-мусор в действии. Я взял его из какого-то места в документации, но я протестировал его, он захватывает файл, нет, он не отправляет, и это было бы глупо ожидать этого)
- Измените мой текущий обработчик (который заботится о создании модели изображения в хранилище данных), чтобы он также использовал
Этот способ:
cloudstorage.open (filename, mode = 'r', content_type = None, options = None, read_buffer_size = storage_api.ReadBuffer.DEFAULT_BUFFER_SIZE, retry_params = None)
В режиме чтения (r) открывает указанный объект облачного хранилища для чтения. В режиме записи w, если указанный файл существует, он открывает его для перезаписи (добавление не поддерживается). Если файл не существует, он создается в указанном сегменте.
Мои проблемы на данный момент
Я не знаю, как работает эта форма, и я не знаю, как получить нужную информацию из этой формы в обработчик, и какая информация понадобится этому обработчику, чтобы я мог ее обработать, создать модель (я уже знаю как создать модель в хранилище данных, уже сделав это), а также отправить изображение в облачное хранилище Google с помощью этого метода:
cloudstorage.open (filename, mode = 'r', content_type = None, options = None, read_buffer_size = storage_api.ReadBuffer.DEFAULT_BUFFER_SIZE, retry_params = None)
В режиме чтения (r) открывает указанный объект облачного хранилища для чтения. В режиме записи w, если указанный файл существует, он открывает его для перезаписи (добавление не поддерживается). Если файл не существует, он создается в указанном сегменте.
Кто-нибудь может привести мне пример? Я не могу найти никаких хороших релевантных сообщений или документов о том, что поместить в форму, чтобы она захватила файл, захватила другие данные формы, которые пользователь заполняет, а затем отправила изображение в облачное хранилище Google.
--ОБНОВИТЬ-- :
Итак, сразу после публикации я погуглил gcs.open, что привело к следующему сообщению:
как загрузить изображение в облачное хранилище через приложение двигатель?
Я считаю, что это может помочь в том, что касается бэкэнда, у меня остался один вопрос.
Чтобы перепрошить вопрос:
Вопросы:
Я не знаю, как будет называться изображение, я бы хотел использовать существующее, а может быть, случайное. Предложения?
Куда это вставить: enctype = multipart / form-data?
будет номер 2. испортить мои другие данные формы? Мне нужно больше информации, чем просто это изображение в запросе на публикацию