文档章节

ueditor在flask中的使用技巧

呵哈糊涂
 呵哈糊涂
发布于 2016/12/09 22:35
字数 583
阅读 24
收藏 0
点赞 0
评论 0

ueditor是百度前端团队开发的一款功能比较齐全的富文本编辑器,正好项目中需要,参考了一些别人写的例子和官方文档完成了上传功能后台程序的编写:

  • 上传照片/截屏
  • 上传附件
  • 上传涂鸦
  • 上传视频

首先需要的ueditor的config进行配置(具体可参考官方文档):

# 初始化时,返回配置文件给客户端
            result = {"imageActionName": "uploadimage", # 自定义get的名字
                      "snapscreenActionName": "uploadimage",
                      "fileActionName": "uploadfile",
                      "videoActionName": "uploadvideo",
                      "scrawlActionName": "uploadscrawl",
                      "imageFieldName": "upfile",# 定义request名字
                      "fileFieldName": "upfile",
                      "videoFieldName": "upfile",
                      "scrawlFieldName": "upfile",
                      "snapscreenFieldName": "upfile",
                      "imageMaxSize": 2048000,# 定义文件的最大尺寸
                      "fileMaxSize": 51200000,
                      "videoMaxSize": 51200000,
                      "scrawlMaxSize": 2048000,
                      "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif"], # 定义上传文件的格式

                      "fileAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp", ".html",
                                         ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
                                         ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
                                         ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso", ".csv",
                                         ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md",
                                         ".xml"],
                      "videoAllowFiles": [".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", ".ogg",
                                          ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"
                                          ],
                      "imageCompressEnable": True,
                      "imageCompressBorder": 1600,
                      "imageInsertAlign": "none",
                      "snapscreenInsertAlign": "none",
                      "imageUrlPrefix": "",
                      "snapscreenUrlPrefix": "",
                      "fileUrlPrefix": "",
                      "videoUrlPrefix": "",
                      "scrawlUrlPrefix": "",
                      "imagePathFormat": "",
                      "filePathFormat": "",
                      "videoPathFormat": ""
                      }

然后是对从前台接收的数据进行保存并返回对应的json

# 涂鸦处理
def upload_scrawl():
    data = base64.b64decode(request.form['upfile'])# 由于涂鸦返回的数据是base64,所以需要使用Python内置的函数base64进行解码
    name = datetime.now().strftime('%Y%m%d%H%M%S')
    filename = name + '.png'# 制作文件名
    open(r"static/upload/scrawl/{}".format(filename), 'wb').write(data) # 将文件存入static/upload/scrawl目录下,这里需要注意解码后的文件为bytes所以要用'wb'
    # 返回需要的json数据
    return {"state": "SUCCESS",
            "url": "/upload/scrawl/{}/".format(filename),
            "title": filename,
            "original": filename,
            }


# 上传视频处理
def upload_video():
    file_storage = request.files['upfile']
    name, extension = os.path.splitext(file_storage.filename) # 将文件剥离成name = xxxxxx extension = .xxx
    name = datetime.now().strftime('%Y%m%d%H%M%S')
    filename = name + extension # 获取的经过格式化的文件名
    file_path = os.path.join(r"static/upload/video/", filename)
    file_storage.save(file_path)
    return {"state": "SUCCESS",
            "url": file_path.replace('static/', '/'),
            "title": file_storage.filename,
            "original": file_storage.filename,
            }


# 上传文件处理
def upload_file():
    file_storage = request.files['upfile']
    name, extension = os.path.splitext(file_storage.filename)
    name = datetime.now().strftime('%Y%m%d%H%M%S')
    filename = name + extension
    file_path = os.path.join(r"static/upload/file/", filename)
    file_storage.save(file_path)
    return {"state": "SUCCESS",
            "url": file_path.replace('static/', '/'),
            "title": file_storage.filename,
            "original": file_storage.filename
            }


# 上传照片包含截屏处理
def upload_image():
    file_storage = request.files['upfile']
    name, extension = os.path.splitext(file_storage.filename)
    name = datetime.now().strftime('%Y%m%d%H%M%S')
    filename = name + extension
    file_path = os.path.join(r"static/upload/image/", filename)
    file_storage.save(file_path)
    return {"state": "SUCCESS",
            "url": file_path.replace('static/', '/'),
            "title": file_storage.filename,
            "original": file_storage.filename,
            "type": extension,
            "size": ""}

 

具体demo可以去我的git上看https://git.oschina.net/hehahutu/myblog.git

© 著作权归作者所有

共有 人打赏支持
呵哈糊涂
粉丝 0
博文 10
码字总数 6480
作品 0
郑州
后端工程师
Flask 使用小结【Updating】

1、最简单的hello world #!/usr/bin/env python encoding: utf-8 from flask import Flaskapp = Flask(name) @app.route('/')def index(): return 'hello world' if name == 'main': app.ru......

xrzs ⋅ 2013/10/24 ⋅ 0

Flask学习笔记-PyCharm配置使用Flask-Script启动以及开启Debug模式

在PyCharm中安装Flask-Script 在上一篇文章中介绍过的如何安装Flask的插件非常方便,点击“+”号检索“flask-script”安装即可。 代码中使用Flask-Script from flask.ext.script import Man...

ykbj ⋅ 2016/02/22 ⋅ 2

Flask学习笔记-使用PyCharm

不得不PyCharm确实是开发Python优秀IDE,用于开发Flask更是没说的。 建议使用Pro版本,注册的问题推荐花点小钱:http://dwz.cn/2KpNib (声明:该店与本人无关) 注册成功后就可以放心使用了...

ykbj ⋅ 2016/02/19 ⋅ 8

用Docker部署Flask应用

Python Web微型框架——Flask 近几年,容器越来越火,也越来越好用,我也开始尝试使用容器来运行我的应用。本篇主要讲述如何将一个Flask应用正确地运行在Docker容器中。 创建应用 创建一个文...

一进制 ⋅ 2017/12/22 ⋅ 0

UEditor使用技巧(2):自定义样式

(1)改变内容框的样式 1.改变字体大小和颜色:内容框默认是白色背景,最近要做Web版的PS,模拟CMD命令窗口或者ISE命令窗口的背景色,分别:是黑色背景+白色字,蓝色背景+白色字 通过谷歌浏览...

辰月 ⋅ 2015/08/16 ⋅ 0

如何学习Python开源项目代码

阅读Python开源项目代码主要有如下三个原因: 1. 在工作过程中遇到一些问题,Google和StackOverFlow等网站找不到解决办法,只能去翻源码。 2. 对某些项目或者方向非常感兴趣,希望深入。 3....

钟声已经敲响 ⋅ 2016/09/12 ⋅ 0

web开发快餐式入门指南 0. 写在前面

Web框架层出不穷,然而它们又大同小异。绝大多数框架都按照MVC架构风格所设计,所以他们提供的组件和功能都十分类似。很多教程在讲解如何使用某一框架开发Web应用时,专注于它在这个框架的实...

apachecn_飞龙 ⋅ 2016/02/23 ⋅ 0

Laravel 不权威导航

Laravel不权威导航 Hi 这里是Roy整理的Laravel相关索引,希望能帮到大家 ,目前只是一小部分,正在努力整理中... Laravel 文档 Laravel 官方文档 —— 英文 Laravel 中文文档 —— laravel-...

weixingo ⋅ 2016/02/05 ⋅ 0

PYTHON资源入口汇总

官网 入口 官方文档 英文 document 2.7.6 入口| 标准库 document 3.x 入口 The Hitchhiker’s Guide to Python 入口 Python Monk 入口 中文 document 2.7 入口 非官方 google的python文档 Go...

好铁 ⋅ 2016/02/12 ⋅ 0

能让你代码更 Pythonic 的小技巧

下面例举几个在工作中用到过,个人认为比较 Pythonic 的一些实现个技巧: cached_property 它的作用是将一个方法的计算结果缓存到对象的 当中,熟悉 Flask 的人对这个应该不陌生,Django 应该...

实验楼 ⋅ 06/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Sqoop

1.Sqoop: 《=》 SQL to Hadoop 背景 1)场景:数据在RDBMS中,我们如何使用Hive或者Hadoop来进行数据分析呢? 1) RDBMS ==> Hadoop(广义) 2) Hadoop ==> RDBMS 2)原来可以通过MapReduce I...

GordonNemo ⋅ 32分钟前 ⋅ 0

全量构建和增量构建的区别

1.全量构建每次更新时都需要更新整个数据集,增量构建只对需要更新的时间范围进行更新,所以计算量会较小。 2.全量构建查询时不需要合并不同Segment,增量构建查询时需要合并不同Segment的结...

无精疯 ⋅ 43分钟前 ⋅ 0

如何将S/4HANA系统存储的图片文件用Java程序保存到本地

我在S/4HANA的事务码MM02里为Material维护图片文件作为附件: 通过如下简单的ABAP代码即可将图片文件的二进制内容读取出来: REPORT zgos_api.DATA ls_appl_object TYPE gos_s_obj.DA...

JerryWang_SAP ⋅ 今天 ⋅ 0

云计算的选择悖论如何对待?

导读 人们都希望在工作和生活中有所选择。但心理学家的调查研究表明,在多种选项中进行选择并不一定会使人们更快乐,甚至不会产生更好的决策。心理学家Barry Schwartz称之为“选择悖论”。云...

问题终结者 ⋅ 今天 ⋅ 0

637. Average of Levels in Binary Tree - LeetCode

Question 637. Average of Levels in Binary Tree Solution 思路:定义一个map,层数作为key,value保存每层的元素个数和所有元素的和,遍历这个树,把map里面填值,遍历结束后,再遍历这个map,把每...

yysue ⋅ 今天 ⋅ 0

IDEA配置和使用

版本控制 svn IDEA版本控制工具不能使用 VCS-->Enable Version Control Integration File-->Settings-->Plugins 搜索Subversion,勾选SVN和Git插件 删除.idea文件夹重新生成项目 安装SVN客户......

bithup ⋅ 今天 ⋅ 0

PE格式第三讲扩展,VA,RVA,FA的概念

作者:IBinary 出处:http://www.cnblogs.com/iBinary/ 版权所有,欢迎保留原文链接进行转载:) 一丶VA概念 VA (virtual Address) 虚拟地址的意思 ,比如随便打开一个PE,找下它的虚拟地址 这边...

simpower ⋅ 今天 ⋅ 0

180623-SpringBoot之logback配置文件

SpringBoot配置logback 项目的日志配置属于比较常见的case了,之前接触和使用的都是Spring结合xml的方式,引入几个依赖,然后写个 logback.xml 配置文件即可,那么在SpringBoot中可以怎么做?...

小灰灰Blog ⋅ 今天 ⋅ 0

冒泡排序

原理:比较两个相邻的元素,将值大的元素交换至右端。 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第...

人觉非常君 ⋅ 今天 ⋅ 0

Vagrant setup

安装软件 brew cask install virtualboxbrew cask install vagrant 创建project mkdir -p mst/vmcd mst/vmvagrant init hashicorp/precise64vagrant up hashicorp/precise64是一个box......

遥借东风 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部