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
Я перепробовал много кодировок, везде каракули либо отдаленно напоминают пару слов из документа, но все перепутано местами и тп
вообщем мне не удалось найти способ показать весь файл сразу, по этому пошел через чтение