Получение ошибок с os.listdir в пределах flask и heroku - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть приложение, которое берет URL-адрес и возвращает соответствующие ему файлы. Я хотел сделать sh это на heroku, но я получаю эту ошибку: ** Файл "/app/server.py", строка 1525, в upload1

music = os.listdir(foldername)

FileNotFoundError: [Errno 2] Нет такого файл или каталог: 'favicon.ico' **

Затем я попытался добавить favicon.ico во все папки и получаю

** File "/app/server.py ", строка 1525, в upload1

music = os.listdir(foldername)

NotADirectoryError: [Errno 20] Не каталог: 'favicon.ico' **

Часть, в которой он пытается бороться, -


    @app.route('/<path:foldername>')
    def upload1(foldername):
        music = os.listdir(foldername)
        print(music)
        path_to_file = music[0]

        return send_file(
        foldername+"/"+path_to_file,
        mimetype="audio/mp3", 
        as_attachment=True, 
        attachment_filename=path_to_file )

Ответы [ 3 ]

0 голосов
/ 19 февраля 2020
@app.route('/<path:foldername>')
    def upload1(foldername):
        abs_path = os.path.abspath(foldername)
        music = os.listdir(abs_path)
        path_to_file = os.path.join(abs_path, music[0])

        return send_file(
        foldername+"/"+path_to_file,
        mimetype="audio/mp3", 
        as_attachment=True, 
        attachment_filename=path_to_file )

сначала он берет имя пользователя из param, а затем преобразуется в abspath. затем listdir выдаст список всех файлов, затем он возьмет первый файл из списка и путь соединения.

0 голосов
/ 19 февраля 2020

Хорошо, сейчас я чувствую себя глупо. проблема в том, что когда я открывал героку, я сразу получал ошибку. Но я получил это, потому что я ничего не добавил после URL (поэтому код, очевидно, не будет работать)

0 голосов
/ 18 февраля 2020

, что вы можете сделать, вы должны установить UPLOAD_FOLDER путь в конфигурации, как.

UPLOAD_FOLDER = "your folder name", тогда вы можете получить путь к файлу, как.

file_path = os.path.abspath(os.path.join(app.config["UPLOAD_FOLDER"], filename))

Вы можете получить больше информации от здесь

...