Ошибка при загрузке файлов из корзины хранилища GCS (не общедоступный, так как важные файлы не могут быть общедоступными)

Если я устанавливаю определенный путь локально, а не с помощью сервера localhost (порт = 8080), он загружает файл, но после развертывания приложения отображается ошибка пути. Я понимаю, что после развертывания он будет загружен по другому пути в зависимости от удаленных машин. Однако каким должен быть путь, чтобы любой пользователь мог загрузить файл на свои локальные устройства в зависимости от своих прав. Файлы в формате pdf/txt и т. д. Мое ведро не является общедоступным. Должен ли я давать какие-либо разрешения или около того?

Использование приложения Python Flask. Код -

def downloadfile():
  storage_client = storage.Client()
    bucket_name = 'ABC'
    blob_name = request.form.get("name")
    url = request.form.get("url")
    #ur=url.split('/')[:-1]
    #delimiter='/'
    file = 'a1'
    bucket=storage_client.get_bucket(bucket_name)
    blob=bucket.blob(blob_name)
    destination_uri = '{}/{}'.format(ur, blob_name)
    blob.download_to_filename(url)

    return render_template("upload.html")

person theway    schedule 11.03.2020    source источник


Ответы (1)


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

Этот вопрос от сообщества - Библиотека облачного хранилища Google для чтения из Cloudstorage и загрузки в локальную/локальную среду? — я считаю, что это лучший пример того, как этого добиться (это не на Python, но я считаю, что вы можете следовать той же логике для этого ) и пример кода для установки абсолютного пути.

Кроме того, приведенные ниже сообщения сообщества содержат дополнительную информацию и примеры того, как это сделать.

Дайте знать, помогла ли вам информация!

person gso_gabriel    schedule 11.03.2020
comment
Если, используя все приведенные выше ссылки, он все еще не работает. Я могу загрузить файл локально по этому пути — /home/dishti/Downloads/python-docs-samples/appengine/standard_python37/building-an-app/building-an-app-2/Downloads CODE — to_dir = os. path.abspath(os.path.expanduser('Загрузки')) if not os.path.exists(to_dir): os.makedirs(to_dir) destination_path='{}/{}'.format(to_dir, blob_name) blob. download_to_filename (путь_назначения) - person theway; 12.03.2020
comment
Но после развертывания приложения отображается ошибка пути, а после печати пути отображается это - /home/vmagent/app/Downloads/a1.txt, но я не вижу файл. Я использую виртуальную машину в Windows, это влияет? - person theway; 12.03.2020
comment
Привет, @theway действительно, похоже, проблема в виртуальной машине, судя по пути, по которому она печатается после ошибки. Не могли бы вы попробовать, не используя виртуальную машину? - person gso_gabriel; 12.03.2020
comment
Каким должен быть путь к файлу, чтобы загрузить его в стандартной среде. И не указывая конкретный путь к нему. Как и в любом браузере, любой может загрузить файл, щелкнув опцию загрузки в свою папку загрузок.? Разве я не могу сделать это так же? - person theway; 06.04.2020