Загрузка в Blobstore без использования blobstore.create_upload_url - PullRequest
0 голосов
/ 14 февраля 2012

Я хотел бы создать приложение, использующее python, в google app engine для обработки загрузки файлов и сохранения их в буфере.

Однако в настоящее время blobstore требует использования blobstore.create_upload_url для создания URL-адреса для записи формы загрузки файла. Поскольку я загружаю с другого сервера, мой вопрос заключается в том, можно ли загрузить файл в gae blobstore без использования этого динамического URL-адреса из blobstore.create_upload_url?

К вашему сведению, это нормально, что я запрашиваю URL загрузки из скрипта python перед тем, как загружать с другого сервера, но это создает дополнительную задержку, а это не то, что я хочу. Также я прочитал, что с помощью так называемого «file-like API» из http://code.google.com/intl/en/appengine/docs/python/blobstore/overview.html#Writing_Files_to_the_Blobstore, но документация, кажется, не охватывает часть при загрузке.

Кроме того, ранее я пытался использовать хранилище данных для загрузки файла, но максимальный размер файла составляет 1 МБ, что недостаточно для моего случая. Пожалуйста, сообщите, спасибо.

1 Ответ

5 голосов
/ 14 февраля 2012

Существует ровно два способа записи файлов в хранилище: 1) использование create_upload_url и публикация формы с вложенным файлом, 2) прямая запись в хранилище с использованием API (с решением )здесь для больших файлов).

Если вы хотите, чтобы удаленный сервер мог загружать файлы, у вас есть два варианта:

1) Удаленный сервер сначала запрашивает URL-адрес.У вас есть обработчик, который просто должен вернуть такой URL.С помощью этого URL-адреса удаленный сервер создает правильно закодированное сообщение POST и публикует его по URL-адресу.

2) Данные файла отправляются в виде параметра HTTP на обработчик на сервер механизма приложений, который используетAPI-интерфейс blobstore write для прямой записи файла.Размер запроса ограничен до 32 МБ, поэтому максимальный размер файла, который вы можете записать с помощью этого метода, будет немного ниже этого.

...