react quill中图片上传由默认转成base64改成上传到服务器的方法


Posted in Javascript onOctober 30, 2019

使用react-quill富文本编辑器,里面处理图片是默认转成base64,提交到后台的时候文件太大,因此这里改写处理image的逻辑,改成上传到服务器。

具体代码如下:

配置1

import Quill from 'quill'
import ReactQuill from 'react-quill'
import 'react-quill/dist/quill.core.css'
import 'react-quill/dist/quill.snow.css'
import QuillEmoji from 'quill-emoji'
import 'quill-emoji/dist/quill-emoji.css'

Quill.register({
  'modules/emoji-toolbar': QuillEmoji.ToolbarEmoji,
  // 'modules/emoji-textarea': QuillEmoji.TextAreaEmoji,
  'modules/emoji-shortname': QuillEmoji.ShortNameEmoji
})

const toolbarContainer = [
  [{ 'size': ['small', false, 'large', 'huge'] }], // custom dropdown
  [{ 'font': [] }],
  [{ 'header': 1 }, { 'header': 2 }],        // custom button values
  ['bold', 'italic', 'underline', 'strike'],    // toggled buttons
  [{ 'align': [] }],
  [{ 'indent': '-1' }, { 'indent': '+1' }],     // outdent/indent
  [{ 'direction': 'rtl' }],             // text direction
  [{ 'script': 'sub' }, { 'script': 'super' }],   // superscript/subscript
  ['blockquote', 'code-block'],

  [{ 'list': 'ordered' }, { 'list': 'bullet' }],
  [{ 'color': [] }, { 'background': [] }],
  ['emoji', 'image', 'video', 'link'],

  ['clean']
]

配置2

<ReactQuill
  ref={ref => this.quillRef = ref}
  placeholder="填写活动详情~"
  theme="snow"
  value={this.state.detailTpl}
  onChange={this.handleChangeDetail}
  modules={{
    toolbar: {
      container: toolbarContainer,
      handlers: {
        image: this.imageHandler
      }
    },
    'emoji-toolbar': true,
    // 'emoji-textarea': true,
    'emoji-shortname': true,
  }}
/>

图片处理方法

imageHandler = () => {
  this.quillEditor = this.quillRef.getEditor()
  const input = document.createElement('input')
  input.setAttribute('type', 'file')
  input.setAttribute('accept', 'image/*')
  input.click()
  input.onchange = async () => {
    const file = input.files[0]
    const formData = new FormData()
    formData.append('quill-image', file)
    const res = await uploadFile(formData) 
    const range = this.quillEditor.getSelection()
    const link = res.data[0].url

    // this part the image is inserted
    // by 'image' option below, you just have to put src(link) of img here. 
    this.quillEditor.insertEmbed(range.index, 'image', link)
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery网页回到顶部效果(图标渐隐,自写)
Jun 16 Javascript
javascript检测两个数组是否相似
May 19 Javascript
使用AngularJS制作一个简单的RSS阅读器的教程
Jun 18 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
Mar 07 Javascript
jquery if条件语句的写法
May 19 Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
Sep 04 Javascript
关于javascript作用域的常见面试题分享
Jun 18 Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
Jul 30 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
Aug 28 Javascript
vue实现树形结构样式和功能的实例代码
Oct 15 Javascript
vue cli4.0项目引入typescript的方法
Jul 17 Javascript
js观察者模式的弹幕案例
Nov 23 Javascript
vue - vue.config.js中devServer配置方式
Oct 30 #Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
Oct 30 #Javascript
vue中更改数组中属性,在页面中不生效的解决方法
Oct 30 #Javascript
基于JavaScript实现单例模式
Oct 30 #Javascript
vue解决使用$http获取数据时报错的问题
Oct 30 #Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
Oct 30 #Javascript
vue请求服务器数据后绑定不上的解决方法
Oct 30 #Javascript
You might like
php 设计模式之 工厂模式
2008/12/19 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
2013/09/30 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
PHP二维数组矩形转置实例
2016/07/20 PHP
理解Javascript_11_constructor实现原理
2010/10/18 Javascript
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
js获取IP和PcName(IE)在vs中可用
2013/08/02 Javascript
js实现的GridView即表头固定表体有滚动条且可滚动
2014/02/19 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
angularjs实现分页和搜索功能
2018/01/03 Javascript
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
2018/03/05 Javascript
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
基于python yield机制的异步操作同步化编程模型
2016/03/18 Python
一个基于flask的web应用诞生 组织结构调整(7)
2017/04/11 Python
Python字符串处理实现单词反转
2017/06/14 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
Python数据可视化之画图
2019/01/15 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
2020/06/15 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
Python3如何使用range函数替代xrange函数
2020/10/05 Python
推荐一些比较有用的css3新属性
2014/11/11 HTML / CSS
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
酒店管理毕业生自荐信
2013/10/24 职场文书
企业管理培训感言
2014/01/27 职场文书
白酒市场营销方案
2014/02/25 职场文书
明星员工获奖感言
2014/08/14 职场文书
公务员考察材料
2014/12/23 职场文书
毕业论文致谢怎么写
2015/05/14 职场文书
茶花女读书笔记
2015/06/29 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书