Open bekab95 opened 6 years ago
from flask import Flask, request, send_from_directory, url_for
from flask_wtf import FlaskForm
from flask_admin import Admin, BaseView, expose
from flask_admin.contrib.fileadmin import FileAdmin
from flask_admin.form.upload import ImageUploadField
from wtforms import StringField
from werkzeug.utils import secure_filename
import os
import uuid
app = Flask(__name__)
app.secret_key = 'your_secret_key_here'
app.config['UPLOADED_PATH'] = 'uploads'
class CKEditorImageUploadForm(FlaskForm):
upload = ImageUploadField('Image')
@app.route('/files/<filename>')
def uploaded_files(filename):
path = app.config['UPLOADED_PATH']
return send_from_directory(path, filename)
@app.route('/upload', methods=['POST'])
def upload():
f = request.files.get('upload')
if f:
extension = f.filename.split('.')[1].lower()
if extension not in ['jpg', 'gif', 'png', 'jpeg']:
return upload_fail(message='Image only!')
unique_filename = str(uuid.uuid4())
filename = secure_filename(unique_filename + '.' + extension)
f.save(os.path.join(app.config['UPLOADED_PATH'], filename))
url = url_for('uploaded_files', filename=filename)
return upload_success(url=url)
return upload_fail(message='No file uploaded')
def upload_success(url):
# Customize success response if needed
return f'<script>window.parent.CKEDITOR.tools.callFunction(1, "{url}", "");</script>'
def upload_fail(message):
# Customize failure response if needed
return f'<script>window.parent.CKEDITOR.tools.callFunction(1, "", "{message}");</script>'
# Flask-Admin setup
admin = Admin(app)
admin.add_view(FileAdmin(app.config['UPLOADED_PATH'], '/files/', name='Uploaded Files'))
if __name__ == '__main__':
app.run(debug=True)
I am trying to integrate ckeditor image upload method
flask admin is giving me 404 error for this POST method (if I implement it in base app it will not) why ?