summaryrefslogtreecommitdiff
path: root/main.py
diff options
context:
space:
mode:
authorjvoisin2018-11-15 16:03:12 +0100
committerjvoisin2018-12-09 18:59:23 +0100
commit3231047c1475c9e500a0e5f92ea129fccef8dd28 (patch)
tree6aab8a78909887b36cdcfb089cf557a043f25875 /main.py
parent60aa7f879e16e4ae329c099eecffd97547b39a07 (diff)
Second commit
Diffstat (limited to 'main.py')
-rw-r--r--main.py53
1 files changed, 39 insertions, 14 deletions
diff --git a/main.py b/main.py
index b2f7776..4547a92 100644
--- a/main.py
+++ b/main.py
@@ -8,14 +8,36 @@ from flask import send_from_directory, after_this_request
8 8
9from werkzeug.utils import secure_filename 9from werkzeug.utils import secure_filename
10 10
11UPLOAD_FOLDER = './'
12ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
13 11
14app = Flask(__name__) 12app = Flask(__name__)
15app.config['SECRET_KEY'] = '1337' 13app.config['SECRET_KEY'] = os.urandom(32)
16app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER 14app.config['UPLOAD_FOLDER'] = './uploads/'
17app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 16MB 15app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 16MB
18 16
17mimetypes = 'image/jpeg, image/png'
18
19
20@app.route('/download/<string:filename>')
21def download_file(filename:str):
22 if filename != secure_filename(filename):
23 flash('naughty naughty')
24 return redirect(url_for('upload_file'))
25
26 filepath = secure_filename(filename)
27
28 complete_path = os.path.join(app.config['UPLOAD_FOLDER'], filepath)
29 if not os.path.exists(complete_path):
30 return redirect(url_for('upload_file'))
31
32 @after_this_request
33 def remove_file(response):
34 os.remove(complete_path)
35 return response
36 return send_from_directory(app.config['UPLOAD_FOLDER'], filepath)
37
38@app.route('/about')
39def about():
40 return render_template('about.html', mimetypes=mimetypes)
19 41
20@app.route('/', methods=['GET', 'POST']) 42@app.route('/', methods=['GET', 'POST'])
21def upload_file(): 43def upload_file():
@@ -24,7 +46,7 @@ def upload_file():
24 flash('No file part') 46 flash('No file part')
25 return redirect(request.url) 47 return redirect(request.url)
26 uploaded_file = request.files['file'] 48 uploaded_file = request.files['file']
27 if uploaded_file.filename == '': 49 if not uploaded_file.filename:
28 flash('No selected file') 50 flash('No selected file')
29 return redirect(request.url) 51 return redirect(request.url)
30 filename = secure_filename(uploaded_file.filename) 52 filename = secure_filename(uploaded_file.filename)
@@ -35,20 +57,23 @@ def upload_file():
35 if parser is None: 57 if parser is None:
36 flash('The type %s is not supported' % mime) 58 flash('The type %s is not supported' % mime)
37 return redirect(url_for('upload_file')) 59 return redirect(url_for('upload_file'))
38 elif parser.remove_all() is not True: 60
61 meta = parser.get_meta()
62
63 if parser.remove_all() is not True:
39 flash('Unable to clean ' % mime) 64 flash('Unable to clean ' % mime)
40 return redirect(url_for('upload_file')) 65 return redirect(url_for('upload_file'))
41 os.remove(filename) 66 output_filename = os.path.basename(parser.output_filename)
42 67
43 @after_this_request 68 # Get metadata after cleanup
44 def remove_file(response): 69 parser, _ = parser_factory.get_parser(parser.output_filename)
45 os.remove(parser.output_filename) 70 meta_after = parser.get_meta()
46 return response 71 os.remove(filepath)
47 72
48 return send_from_directory(app.config['UPLOAD_FOLDER'], parser.output_filename) 73 return render_template('download.html', mimetypes=mimetypes, meta=meta, filename=output_filename, meta_after=meta_after)
49 74
50 mimetypes = 'image/jpeg, image/png'
51 return render_template('index.html', mimetypes=mimetypes) 75 return render_template('index.html', mimetypes=mimetypes)
52 76
53 77
54app.run() 78if __name__ == '__main__':
79 app.run()