imageshare_client/app.py
2018-07-13 12:10:37 +03:00

103 lines
2.7 KiB
Python

from flask import Flask, render_template, request, redirect, url_for, send_from_directory, abort
import os
import random
import string
app = Flask(__name__)
IMAGE_FOLDER = os.path.basename('img')
ALLOWED_EXTENSIONS = {'jpg', 'png', 'gif', 'jpeg', 'webm', 'gifv', 'mp4'}
SERVER_URL = 'http://localhost:5000'
app.config['FILE_FOLDER'] = IMAGE_FOLDER
app.config['MAX_CONTENT_LENGTH'] = 50 * 1024 * 1024
if not os.path.exists(IMAGE_FOLDER):
os.mkdir(IMAGE_FOLDER)
@app.route('/')
def home():
return render_template('index.html')
@app.route('/upload', methods=['POST'])
def upload_file():
print(request)
if 'file' not in request.files:
print("no image found")
return abort(400)
file = request.files['file']
if file.filename == '':
return abort(400)
if file:
file_extension = get_file_extension(file.filename)
if file_extension:
random_unique_filename = generate_random_filename(file_extension)
file.save(os.path.join(app.config['FILE_FOLDER'], random_unique_filename))
url = url_for('get_file', filename=random_unique_filename)
print(url)
return redirect(url)
else:
return abort(415)
else:
return abort(400)
@app.route('/uploadcli', methods=['POST'])
def uploadcli_file():
print(request)
if 'file' not in request.files:
print("no image found")
return abort(400)
file = request.files['file']
if file.filename == '':
return abort(400)
if file:
file_extension = get_file_extension(file.filename)
if file_extension:
random_unique_filename = generate_random_filename(file_extension)
file.save(os.path.join(app.config['FILE_FOLDER'], random_unique_filename))
url = url_for('get_file', filename=random_unique_filename)
print(url)
return SERVER_URL + url
else:
return abort(415)
else:
return abort(400)
@app.route('/<filename>')
def get_file(filename):
url = app.config['FILE_FOLDER']
if url:
return send_from_directory(url, filename)
else:
return abort(404)
def get_file_extension(filename):
try:
extension = filename.rsplit('.', 1)[1].lower()
if extension in ALLOWED_EXTENSIONS:
return extension
else:
return ''
except:
return ''
def generate_random_filename(file_extension):
while True:
filename = ''.join(random.choices(string.ascii_letters + string.digits, k=10)) + '.' + file_extension
if not os.path.exists(os.path.join(app.config['FILE_FOLDER'], filename)):
return filename
if __name__ == '__main__':
app.run('127.0.0.1', 5000)