-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
89 lines (76 loc) · 2.5 KB
/
Copy pathapp.py
File metadata and controls
89 lines (76 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# -*- coding:utf-8 -*-
#!/usr/bin/env python
#
# Author: promisejohn
# Email: promise.john@gmail.com
#
from flask import Flask, render_template, request, redirect, url_for, flash, \
send_from_directory, make_response, abort, session, escape
from werkzeug import secure_filename
import os
app = Flask(__name__)
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'
app.config['UPLOAD_FOLDER'] = '/Users/promise/dev/python/web/tecstack/upload'
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
@app.route('/index',methods=['GET'])
def index():
app.logger.debug('get /index')
app.logger.warning('get /index')
app.logger.error('get /index')
uname = request.cookies.get('uname')
if 'username' in session:
msg = 'logged in as %s.' % escape(session['username'])
else:
msg = 'You are not logged in.'
resp = make_response(render_template('index.html',name=uname,msg=msg))
if not uname:
resp.set_cookie('uname','john')
return resp
@app.route('/user/<username>')
def show_user_profile(username):
return "User %s " % username
@app.route('/post/<int:post_id>')
def show_post(post_id):
return "Post %d " % post_id
@app.route('/about')
def about():
return "About page"
@app.route('/login',methods=['POST','GET'])
def login():
if request.method == 'POST':
# validate form, show error if nessary
session['username'] = request.form['username']
flash('You were successfully logged in')
return redirect(url_for('index'))
return render_template('login.html')
@app.route('/logout')
def logout():
session.pop('username',None)
return redirect(url_for('index'))
@app.route('/upload',methods=['POST','GET'])
def upload_file():
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
if request.method == 'POST':
f = request.files['myfile']
if f and allowed_file(f.filename):
filename = secure_filename(f.filename)
f.save(os.path.join(app.config['UPLOAD_FOLDER'],filename))
return redirect(url_for('index'))
return '''
<!doctype html>
<title>Upload new File</title>
<h1>Upload new File</h1>
<form action="" method=post enctype=multipart/form-data>
<p><input type=file name='myfile'>
<input type=submit value=Upload>
</form>
'''
@app.route('/download/<filename>')
def download_file(filename):
return send_from_directory(app.config['UPLOAD_FOLDER',filename])
@app.errorhandler(404)
def page_not_found(error):
return render_template('page_not_found.html'),404
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0')