Загрузка в Blobstore без использования blobstore.create_upload_url

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

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

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

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

1 ответ

Решение

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

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

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

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

Другие вопросы по тегам