GAE - обработка внешнего URI

1

Я пытаюсь обрабатывать URI на GAE гибкой, в частности, я обрабатываю pdf файлы через pdf2image. Всякий раз, когда я использую URI в pdf2image convert_from_path, GAE бросает

Файл не найден

но если я делаю тот же процесс на своей локальной машине, он выполняется без ошибок. Должен ли я установить что-то в Google App Engine, чтобы это разрешить?

  • 0
    Можете ли вы опубликовать код, чтобы увидеть, как вы извлекали этот файл? Спасибо!!! (Или, если ответ Алекса работает, просто примите его, и мы будем использовать его пример кода.)
  • 1
    Ответ Алекса решил это! Спасибо :)
Теги:
pdf
google-app-engine

1 ответ

3
Лучший ответ

где находится этот pdf файл?

Ваш заголовок говорит "внешний URI", но документы pdf2image для convert_from_path похоже, указывают на то, что этот файл находится в вашем коде.

Если файл действительно сидит в коде проекта и развертывается с вашим проектом, попробуйте использовать его для преобразования относительного пути в абсолютный:

curr_dir = os.path.dirname(os.path.realpath(__file__))
images = convert_from_path(curr_dir+'/my/relative/path/example.pdf')

Редактировать:

Для pdf файлов в GCS я бы обрабатывал загрузку отдельно от gcs, а затем использовал convert_from_bytes вместо convert_from_path

Вы установили соединение с GCS следующим образом:

https://cloud.google.com/appengine/docs/flexible/python/using-cloud-storage

Используйте эту функцию, чтобы получить кадр GCS:

https://googlecloudplatform.github.io/google-cloud-python/latest/storage/buckets.html#google.cloud.storage.bucket.Bucket.get_blob

И затем используйте эту функцию, чтобы фактически загрузить байты:

https://googlecloudplatform.github.io/google-cloud-python/latest/storage/blobs.html#google.cloud.storage.blob.Blob.download_as_string

Так что-то вроде этого:

client = storage.Client()
bucket = client.get_bucket('my-bucket')
blob = bucket.get_blob('/path/to/blob.pdf')
bytes = blob.download_as_string()
images = convert_from_bytes(bytes)
  • 0
    Он размещен в хранилище Google. И это тот же файл, который обычно конвертируется на моей локальной машине (используя тот же URI).
  • 0
    обновил мой ответ для PDF на GCS. Кроме того, похоже, что pdf2image - это просто оболочка Python для команды bash pdftoppm . Вы получили эту настройку в вашей среде GAE flex?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню