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('/') 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)