· 7 years ago · Aug 15, 2018, 07:08 AM
1import os
2from flask import Flask, flash, request, redirect, url_for, jsonify
3from werkzeug.utils import secure_filename
4import boto
5import boto.s3.connection
6from boto.s3.key import Key
7import sys
8
9access_key = ''
10secret_key = ''
11UPLOAD_FOLDER = './Uploads'
12ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
13
14app = Flask(__name__)
15app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
16
17conn = boto.connect_s3(access_key, secret_key, host='s3.ca-central-1.amazonaws.com')
18
19
20def percent_cb(complete, total):
21 sys.stdout.write('.')
22 sys.stdout.flush()
23
24
25def allowed_file(filename):
26 return '.' in filename and \
27 filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
28
29
30@app.route('/test', methods=['GET', 'POST'])
31def fun():
32 if request.method == 'POST':
33 return jsonify('Post Test OK')
34 else:
35 return jsonify('Get Test OK')
36
37
38@app.route('/', methods=['GET', 'POST'])
39def upload_file():
40 if request.method == 'POST':
41 # check if the post request has the file part
42 if 'file' not in request.files:
43 flash('No file part')
44 return redirect(request.url)
45 file = request.files['file']
46 # if user does not select file, browser also
47 # submit an empty part without filename
48 if file.filename == '':
49 flash('No selected file')
50 return redirect(request.url)
51 if file and allowed_file(file.filename):
52 filename = secure_filename(file.filename)
53 # file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
54 bucket = conn.get_bucket('bucketname')
55 k = bucket.new_key(filename)
56 k.set_contents_from_file(file, headers=None, replace=True, cb=percent_cb, num_cb=10, policy=None)
57 return jsonify(Uploaded=True)
58 return '''
59 <!doctype html>
60 <title>Upload new File</title>
61 <h1>Upload new File</h1>
62 <form method=post enctype=multipart/form-data>
63 <input type=file name=file>
64 <input type=submit value=Upload>
65 </form>
66 '''
67
68
69if __name__ == '__main__':
70 app.run(host='127.0.0.1', port=int(os.environ.get("PORT", 5000)))