Web_app
/
web_app.py
60 строк · 1.7 Кб
1import os
2from flask import Flask, request, redirect, send_file, render_template
3from flask_httpauth import HTTPBasicAuth
4from werkzeug.utils import secure_filename
5
6from dotenv import load_dotenv
7
8load_dotenv()
9
10ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', 'csv'}
11UPLOAD_FOLDER = '/files'
12
13
14app = Flask(__name__, template_folder='templates', static_folder="static")
15app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
16auth = HTTPBasicAuth()
17
18
19@auth.verify_password
20def verify_password(username, password):
21if os.environ.get(username) == password:
22return username
23
24
25@app.route('/', methods=['GET'])
26@auth.login_required
27def index_page():
28files = os.listdir(UPLOAD_FOLDER)
29user = auth.current_user()
30return render_template('index.html', files=files,
31folder=UPLOAD_FOLDER, username=user)
32
33
34@app.route('/upload_file', methods=['GET', 'POST'])
35@auth.login_required
36def upload_file():
37if request.method == ['POST']:
38if 'file' not in request.files:
39print('no file')
40return redirect(request.url)
41file = request.files['file']
42if file.filename == '':
43print('no filename')
44return redirect(request.url)
45else:
46filename = secure_filename(file.filename)
47file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
48print(f"saved file {file} successfully")
49return redirect('/')
50
51
52@app.route('/download_file/<filename>')
53@auth.login_required
54def download_file(filename):
55file_path = f'{UPLOAD_FOLDER}/{filename}'
56return send_file(file_path, as_attachment=True, attachment_filename='')
57
58
59if __name__ == '__main__':
60app.run(host="0.0.0.0", port=5000)
61