Flask. Показ разных файлов на странице html

Мне надо на странице сайта открыть файл на чтение, чтобы показать все содержимое файлов (документов ворд разных кодировок, картинок разных форматов, ексель таблиц и тд) без скачивания. Файлы содержат казахские буквы

В файле index.html:

{% extends 'base.html' %}

{% block content %}
    {% with messages = get_flashed_messages(with_categories=true) %}
    <!-- Содержимое для залогиненных пользователей -->
    <h2>Добро пожаловать!</h2>
    <p>Вам доступно приветственное сообщение или другое содержимое.</p>
    <p>{{ random_message }}</p><br><br>
    <h3>Содержимое папки:</h3>
    <ul>
        {% for file in files %}
            <li><a href="{{ url_for('view_file', filename=file) }}">{{ file }}</a></li>
        {% endfor %}
    </ul>
    <!-- Кнопка выхода -->
    <form method="POST" action="{{ url_for('logout') }}">
        <input type="submit" value="Выйти">
    </form>
{% endblock %}

Обработка перехода к странице файла:

@app.route('/view_file/<filename>')
def view_file(filename):
    full_path = os.path.join(folder_path, filename)

    with open(full_path, 'r', encoding='utf-8') as file:
        file_content = file.read()

    return render_template('file_content.html', filename=filename, file_content=file_content)

Вот сам file_content.html:

{% extends 'base.html' %}

{% block content %}
    <h2>{{ filename }}</h2>
    <pre>{{ file_content }}</pre>
{% endblock %}

Выдало ошибку:

Traceback (most recent call last):
  File "D:\Programming\Python\HomeWebServer\.venv\Lib\site-packages\flask\app.py", line 1498, in __call__
    return self.wsgi_app(environ, start_response)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Programming\Python\HomeWebServer\.venv\Lib\site-packages\flask\app.py", line 1476, in wsgi_app
    response = self.handle_exception(e)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Programming\Python\HomeWebServer\.venv\Lib\site-packages\flask\app.py", line 1473, in wsgi_app
    response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Programming\Python\HomeWebServer\.venv\Lib\site-packages\flask\app.py", line 882, in full_dispatch_request
    rv = self.handle_user_exception(e)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Programming\Python\HomeWebServer\.venv\Lib\site-packages\flask\app.py", line 880, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Programming\Python\HomeWebServer\.venv\Lib\site-packages\flask\app.py", line 865, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Programming\Python\HomeWebServer\app.py", line 37, in view_file
    file_content = file.read()
                   ^^^^^^^^^^^
  File "<frozen codecs>", line 322, in decode
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xaa in position 14: invalid start byte

Я перепробовал много кодировок, везде каракули либо отдаленно напоминают пару слов из документа, но все перепутано местами и тп

вообщем мне не удалось найти способ показать весь файл сразу, по этому пошел через чтение


Ответы (0 шт):