Web_app

Форк
0
/
web_app.py 
60 строк · 1.7 Кб
1
import os
2
from flask import Flask, request, redirect, send_file, render_template
3
from flask_httpauth import HTTPBasicAuth
4
from werkzeug.utils import secure_filename
5

6
from dotenv import load_dotenv
7

8
load_dotenv()
9

10
ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', 'csv'}
11
UPLOAD_FOLDER = '/files'
12

13

14
app = Flask(__name__, template_folder='templates', static_folder="static")
15
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
16
auth = HTTPBasicAuth()
17

18

19
@auth.verify_password
20
def verify_password(username, password):
21
    if os.environ.get(username) == password:
22
        return username
23

24

25
@app.route('/', methods=['GET'])
26
@auth.login_required
27
def index_page():
28
    files = os.listdir(UPLOAD_FOLDER)
29
    user = auth.current_user()
30
    return render_template('index.html', files=files,
31
                           folder=UPLOAD_FOLDER, username=user)
32

33

34
@app.route('/upload_file', methods=['GET', 'POST'])
35
@auth.login_required
36
def upload_file():
37
    if request.method == ['POST']:
38
        if 'file' not in request.files:
39
            print('no file')
40
            return redirect(request.url)
41
        file = request.files['file']
42
        if file.filename == '':
43
            print('no filename')
44
            return redirect(request.url)
45
        else:
46
            filename = secure_filename(file.filename)
47
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
48
            print(f"saved file {file} successfully")
49
            return redirect('/')
50

51

52
@app.route('/download_file/<filename>')
53
@auth.login_required
54
def download_file(filename):
55
    file_path = f'{UPLOAD_FOLDER}/{filename}'
56
    return send_file(file_path, as_attachment=True, attachment_filename='')
57

58

59
if __name__ == '__main__':
60
    app.run(host="0.0.0.0", port=5000)
61

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.