阿桂天山的技术小结:Flask+UEditor实现图片文件上传富文本编辑

这篇具有很好参考价值的文章主要介绍了阿桂天山的技术小结:Flask+UEditor实现图片文件上传富文本编辑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

话不多说,有图有源码

先看效果:

阿桂天山的技术小结:Flask+UEditor实现图片文件上传富文本编辑,flask,python,后端

阿桂天山的技术小结:Flask+UEditor实现图片文件上传富文本编辑,flask,python,后端

 1.前端html页面index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="{{ url_for('static',filename='ueditor/ueditor.config.js') }}"></script>
    <script src="{{ url_for('static',filename='ueditor/ueditor.all.js') }}"></script>
    <script src="{{ url_for('static',filename='ueditor/lang/zh-cn/zh-cn.js') }}"></script>
    <title>Ewangda--测试ueditor</title>
</head>

<body>
<script id="editor" type="text/plain" style="width:80%;height:400px;">
</script>
<script>
    var ue = UE.getEditor("editor",{
        'serverUrl': '/ueditor/upload/'
    });
</script>
</body>
</html>

2.后端ueditor.py执行文件(这个非常重要)

#encoding: utf-8
from flask import Blueprint,request,jsonify,url_for,send_from_directory,current_app as app
from flask_wtf import CSRFProtect
import json
import re
import string
import time
import hashlib
import random
import base64
import sys
import os

# csrf = CSRFProtect()
os.chdir(os.path.abspath(sys.path[0]))

bp = Blueprint('ueditor',__name__,url_prefix='/ueditor')

UEDITOR_UPLOAD_PATH = ""


@bp.before_app_first_request
def before_first_request():
    global UEDITOR_UPLOAD_PATH

    UEDITOR_UPLOAD_PATH = app.config.get('UEDITOR_UPLOAD_PATH')
    if UEDITOR_UPLOAD_PATH and not os.path.exists(UEDITOR_UPLOAD_PATH):
        os.mkdir(UEDITOR_UPLOAD_PATH)

    # csrf = app.extensions.get('csrf')
    # if csrf:
    #     csrf.exempt(upload)


def _random_filename(rawfilename):
    letters = string.ascii_letters
    random_filename = str(time.time()) + "".join(random.sample(letters,5))
    filename = hashlib.md5(random_filename.encode('utf-8')).hexdigest()
    subffix = os.path.splitext(rawfilename)[-1]
    return filename + subffix

# @csrf.exempt#局部关闭CSRF
@bp.route('/upload/',methods=['GET','POST'])
def upload():
    action = request.args.get('action')
    result = {}
    if action == 'config':
        config_path = os.path.join(bp.static_folder or app.static_folder,'ueditor','config.json')
        #print(config_path)#python project\cms\static\ueditor\config.json
        with open(config_path,'r',encoding='utf-8') as fp:
            result = json.loads(re.sub(r'\/\*.*\*\/','',fp.read()))

    elif action in ['uploadimage','uploadvideo','uploadfile']:
        image = request.files.get("upfile")
        filename = image.filename
        save_filename = _random_filename(filename)
        result = {
            'state': '',
            'url': '',
            'title': '',
            'original': ''
        }
        image.save(os.path.join(UEDITOR_UPLOAD_PATH, save_filename))
        result['state'] = "SUCCESS"
        result['url'] = url_for('ueditor.files', filename=save_filename)
        result['title'] = save_filename
        result['original'] = save_filename

    elif action == 'uploadscrawl':#执行上传涂鸦的action名称
        base64data = request.form.get("upfile")
        img = base64.b64decode(base64data)
        filename = _random_filename('xx.png')
        filepath = os.path.join(UEDITOR_UPLOAD_PATH,filename)
        with open(filepath,'wb') as fp:
            fp.write(img)
        result = {
            "state": "SUCCESS",
            "url": url_for('files',filename=filename),
            "title": filename,
            "original": filename
        }

    return jsonify(result)


@bp.route('/files/<filename>/')
def files(filename):
    return send_from_directory(UEDITOR_UPLOAD_PATH,filename)

3.路径配置文件config.py

import os

#上传到本地
UEDITOR_UPLOAD_PATH = os.path.join(os.path.dirname(__file__), 'static\\images')

4.启动运行程序appstart.py

from flask import Flask,render_template

import config
app = Flask(__name__)
app.config.from_object(config)

from ueditor import bp as ueditor_blue
app.register_blueprint(ueditor_blue)

@app.route('/')
def index():
    return render_template('index.html')
# @app.route('/demo_ueditor')
# def demo_ueditor():
#     return render_template('demo_ueditor.html')

if __name__ == '__main__':
    app.run(port=9000,debug=True)

特殊强调:路径蓝图,必须指向ueditor(这个非常非常非常重要,否则前端会报错),放在app执行文件中

from ueditor import bp as ueditor_blue
app.register_blueprint(ueditor_blue)

5)最后整个工程文件树:

阿桂天山的技术小结:Flask+UEditor实现图片文件上传富文本编辑,flask,python,后端

 

 希望你能最终实现,对你有用就点赞吧,以鼓励我继续津津乐道!文章来源地址https://www.toymoban.com/news/detail-674537.html

到了这里,关于阿桂天山的技术小结:Flask+UEditor实现图片文件上传富文本编辑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 技术分享|ueditor漏洞利用&源码分析超详细分析

    UEditor是一款基于web技术的所见即所得富文本编辑器,广泛应用于各种web应用中。但是,近年来,由于其漏洞导致的安全问题也受到了广泛关注。本文将详细介绍ueditor的漏洞利用及其C#版本的源码解析。 ueditor的漏洞主要存在于其上传功能中,攻击者可以利用上传漏洞将恶意脚

    2024年02月09日
    浏览(34)
  • Flask boostrap实现图片视频上传下载展示

    项目目录结构 html js代码 fileinput插件下载地址:https://github.com/kartik-v/bootstrap-fileinput/ imgEnlarge.js如下 代码下载链接:https://download.csdn.net/download/weixin_44986037/87986647

    2024年02月12日
    浏览(32)
  • 使用flask实现图片的查看、翻页操作、分类和上传

    本实验使用flask制作一个图像的分类上传界面,首先介绍一下使用方法。 页面如下 1、首先打开‘index.html’文件,在select标签中添加分类类别。注意:value值应和标签文本一样。   将需要分类的图片全部粘贴进images文件夹中。    运行‘classify.py’文件。 点击下方链接 出现以

    2024年02月03日
    浏览(14)
  • Ueditor编辑器任意文件上传漏洞

    UEditor是一款所见即所得的开源富文本编辑器,具有轻量、可定制、用户体验优秀等特点,被广大WEB应用程序所使用。本次爆出的高危漏洞属于.NET版本,其它的版本暂时不受影响。漏洞成因是在抓取远程数据源的时候未对文件后缀名做验证导致任意文件写入漏洞,黑客利用此

    2024年01月21日
    浏览(44)
  • UEditor富文本编辑器上传图片打不开,提示“后端配置项没有正常加载,上传插件不能正常使用”

    1、安装 npm install vue-ueditor-wrap 2、下载所需资源 这一步在解决报错的时候会用到 👉👉👉👉👉 UEditor资源下载链接 上面的打不开请从下面链接下载项目 ueditor-download: vue项目中集成ueditor的UE资源 3、下载完成后将文件夹放到public文件夹下 4、 配置ueditor.config.js,并且在main.j

    2024年02月13日
    浏览(43)
  • 实战纪实 | 编辑器漏洞之Ueditor-任意文件上传漏洞 (老洞新谈)

    前言 前段时间在做某政府单位的项目的时候发现存在该漏洞,虽然是一个老洞,但这也是容易被忽视,且能快速拿到shell的漏洞,在利用方式上有一些不一样的心得,希望能帮助到一些还不太了解的小伙伴,故此写了此篇文章。 1.1 漏洞描述 Ueditor是百度开发的一个网站编辑器

    2024年04月26日
    浏览(28)
  • flask项目中 实现下载文件功能

    file_path 变量中提供要下载的文件的路径。 当访问 download 路由时,会触发 download_file 函数,该函数使用 send_file 方法将文件发送到客户端以进行下载 as_attachment=True 表示将文件作为附件下载,而不是在浏览器中直接打开。

    2024年02月07日
    浏览(33)
  • 云存储技术与应用学习小结

    认识云存储 1.1存储发展历史 1.1.1云存储出现 云存储技术,孕育在云计算技术的发展历程之中。基于云计算技术的发展,以及宽带业务的大幅度提速,为云存储的普及和发展提供了良好的技术支持。2004年,互联网进入WEB2.0时代后,人们更加注重资源的分析和信息的交互,这种

    2024年02月10日
    浏览(25)
  • 秀米编辑器(xiumi)+百度编辑器(Ueditor) 集成 :解决集成问题,秀米编辑器导出到百度编辑器格式问题,图片保存到自己的服务器(阿里云OSS)

    1.集成前提条件:         1. 需要集成 百度编辑器 到环境中         2. https 环境下才可以导出数据到百度编辑器,如果不是https环境,会出现错误          然后我们开始讲解如何集成: 2.引入资源: //百度编辑器 需要修改的文件(配置与原始的配置不一样,后面

    2024年02月09日
    浏览(34)
  • YOLO-World技术小结

    info paper https://arxiv.org/abs/2401.17270 code https://github.com/AILab-CVC/YOLO-World org 腾讯 demo https://huggingface.co/spaces/stevengrove/YOLO-World 个人博客位置 http://www.myhz0606.com/article/yolo_world 这篇文章从计算效率的角度解决开集目标检测问题(open-vocabulary object detection, OVD )。 经典的目标检测的

    2024年02月22日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包