Skip to content

Commit 6f216a5

Browse files
committed
flask dropzone / uploads demo
0 parents  commit 6f216a5

File tree

3 files changed

+88
-0
lines changed

3 files changed

+88
-0
lines changed

app.py

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
from flask import Flask, redirect, render_template, request, session, url_for
2+
from flask_dropzone import Dropzone
3+
from flask_uploads import UploadSet, configure_uploads, IMAGES, patch_request_class
4+
5+
import os
6+
7+
app = Flask(__name__)
8+
dropzone = Dropzone(app)
9+
10+
11+
app.config['SECRET_KEY'] = 'supersecretkeygoeshere'
12+
13+
# Dropzone settings
14+
app.config['DROPZONE_UPLOAD_MULTIPLE'] = True
15+
app.config['DROPZONE_ALLOWED_FILE_CUSTOM'] = True
16+
app.config['DROPZONE_ALLOWED_FILE_TYPE'] = 'image/*'
17+
app.config['DROPZONE_REDIRECT_VIEW'] = 'results'
18+
19+
# Uploads settings
20+
app.config['UPLOADED_PHOTOS_DEST'] = os.getcwd() + '/uploads'
21+
22+
photos = UploadSet('photos', IMAGES)
23+
configure_uploads(app, photos)
24+
patch_request_class(app) # set maximum file size, default is 16MB
25+
26+
27+
@app.route('/', methods=['GET', 'POST'])
28+
def index():
29+
30+
# set session for image results
31+
if "file_urls" not in session:
32+
session['file_urls'] = []
33+
# list to hold our uploaded image urls
34+
file_urls = session['file_urls']
35+
36+
# handle image upload from Dropszone
37+
if request.method == 'POST':
38+
file_obj = request.files
39+
for f in file_obj:
40+
file = request.files.get(f)
41+
42+
# save the file with to our photos folder
43+
filename = photos.save(
44+
file,
45+
name=file.filename
46+
)
47+
48+
# append image urls
49+
file_urls.append(photos.url(filename))
50+
51+
session['file_urls'] = file_urls
52+
return "uploading..."
53+
# return dropzone template on GET request
54+
return render_template('index.html')
55+
56+
57+
@app.route('/results')
58+
def results():
59+
60+
# redirect to home if no images to display
61+
if "file_urls" not in session or session['file_urls'] == []:
62+
return redirect(url_for('index'))
63+
64+
# set the file_urls and remove the session variable
65+
file_urls = session['file_urls']
66+
session.pop('file_urls', None)
67+
68+
return render_template('results.html', file_urls=file_urls)

templates/index.html

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<title>Flask App</title>
5+
{{ dropzone.load() }}
6+
{{ dropzone.style('border: 2px dashed #0087F7; margin: 10%; min-height: 400px;') }}
7+
</head>
8+
<body>
9+
<h1>Hello from Flask!</h1>
10+
{{ dropzone.create(action_view='index') }}
11+
</body>
12+
</html>

templates/results.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<h1>Hello Results Page!</h1>
2+
<a href="{{ url_for('index') }}">Back</a><p>
3+
4+
<ul>
5+
{% for file_url in file_urls %}
6+
<li><img style="height: 150px" src="{{ file_url }}"></li>
7+
{% endfor %}
8+
</ul>

0 commit comments

Comments
 (0)