0

Я хотел бы обрабатывать большие загрузки файлов в App Engine (Blobstore -> Google Cloud Storage) в моем веб-приложении, ориентированном на AJAX, размещенном в том же домене App Engine.Загрузка файла Webapp в App Engine Blobstore

От клиента javascript браузера я вызываю сервер App Engine и получаю URL-адрес в ответ (созданный с помощью 'create_upload_url'), но я застрял в том, как взять файл и загрузить его на этот URL-адрес, не получая ошибку перекрестного домена , Кажется, я не могу установить заголовки CORS на приемнике Blobstore и домен не соответствует домену, от которого работает мое приложение («create_upload_url» добавляет «1-точка-» в префикс субдомена).

Есть идеи или опыт с этим?

Одна идея: поскольку префикс «1-точка-», похоже, относится только к определенной развернутой версии, возможно, если я проанализирую URL-адрес и удалю любой префикс, подобный этому, чтобы сделать домены одинаковыми и отправить на этот URL-адрес избегайте неправильного совпадения домена.

+0

Ты отключение пользовательского домена или приложения? Создать URL-адрес загрузки, похоже, не добавляет префикс версии (попробуйте здесь http://shell-27.appspot.com/). Вы уверены, что не разговариваете с определенной версией своего javascript? С другой стороны, при создании URL-адреса вы можете указать ведро Cloud Storage. –

+0

Да, я обслуживаю приложение apps. Вы правы, на этой оболочке одна и та же команда не добавляет «1-точка» (но она по-прежнему работает на моем экземпляре). Вот команда, которую я использую: blobstore.create_upload_url ("/ image/upload /", max_bytes_per_blob = 100000000, max_bytes_total = 100000000, rpc = None, gs_bucket_name = "bucketname") –

+0

Я вызываю 'create_upload_url' из облака Сценарий конечных точек, возможно, это проблема? –

ответ

1

Спасибо, что принесли это. Это связано с текущим характером обработки запросов, и мы рассматриваем его как ошибку, а мозговой штурм - для того, чтобы найти лучший способ продвижения вперед.

В настоящее время, если пользователь делает запрос к

https://myappid.appspot.com/_ah/api/myApi/v1/methodpath 

затем перенаправляется по API инфраструктуры Google для

https://version-dot-myappid.appspot.com/_ah/spi/MyApi.Method 

где version является версией по умолчанию для myappid приложения.

ОБНОВЛЕНИЕ: Ранее предлагаемое обходное решение a la How do I parse a URL into hostname and path in javascript? было показано, что оно не работает. Это связано с тем, что экземпляр App Engine, который вызывает create_upload_url, «знает», какая версия/хост он есть, и поэтому изменение этого вызывает ошибки.

+0

bossylobster, изменение URL загрузки не работает. Я изменил рабочий пример (который обычно использует «version-dot-» as-is), и я подтвердил правильность преобразования URL-адреса, и он не работает. Я получаю перенаправление 303 на http://temporary-blobstore-error.appspot.com/ Кроме того, в журналах App Engine нет записи или ошибки. –

+0

Ах, ты прав, мой плохой с ошибочной рекомендацией. Кажется, сейчас он «сломан». У нас есть ошибка, поданная внутренне для отслеживания этого и сделаем все возможное, чтобы оно было исправлено. Обновленный мой ответ, чтобы отразить это. – bossylobster

+0

Это ошибка, о которой вы говорили? https://code.google.com/p/googleappengine/issues/detail?id=5059 –

0

В моей программе эта проблема возникает только при некоторых обстоятельствах и только на линии, а не на сервере dev. Я получил происхождение проблемы, но это ошибка о в AppEngine

В JavaScript страницы у меня есть:

$.ajax({ 
      type: "POST", 
      url: upload_url, 
      data: formData, 
      contentType: false, 
      processData: false 
      }).... 

Я получаю upload_url в питона код из: upload_url = blobstore.create_upload_url (»/uploadDragImage ')

, когда я называю эту страницу: https://comunapp-dot-skilled-999.appspot.com/item?categ=news

вызов Ajax работает отлично, но если добавить параметр:

https://comunapp-dot-skilled-999.appspot.com/item?categ=news& Пиппо

генерируемый upload_url, кажется, не имеет смысла, вызов Ajax получить эту ошибку:

Mixed Content: The page at ' https://comunapp-dot-skilled-999.appspot.com/item?categ=news&luca ' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint ' http://temporary-blobstore-error.appspot.com/ '. This request has been blocked; the content must be served over HTTPS.

'&' в URL страницы сломаться генерацией URL : blobstore.create_upload_url («/ uploadDragImage»)

Примечание: Дев сервер работает, то proble только на линии

Возможное решение, чтобы избежать использования &, и использовать что-то еще, чтобы отдельные параметры

Смежные вопросы