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 相关文章推荐
高性能web开发 如何加载JS,JS应该放在什么位置?
May 14 Javascript
解决jquery插件冲突的问题
Jan 23 Javascript
整理Javascript数组学习笔记
Nov 29 Javascript
javascript基础语法——全面理解变量和标识符
Jun 02 Javascript
基于JavaScript Array数组方法(新手必看篇)
Aug 20 Javascript
简单实现js悬浮导航效果
Feb 05 Javascript
Vue表单验证插件Vue Validator使用方法详解
Apr 07 Javascript
parabola.js抛物线与加入购物车效果的示例代码
Oct 25 Javascript
vue综合组件间的通信详解
Nov 06 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
Apr 23 Javascript
Vue2.0仿饿了么webapp单页面应用详细步骤
Jul 08 Javascript
Vue中computed和watch有哪些区别
Dec 19 Vue.js
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通用检测函数集合
2006/11/25 PHP
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
2011/03/28 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
php实现parent调用父类的构造方法与被覆写的方法
2015/02/11 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
Javascript的闭包
2009/12/31 Javascript
将HTML的左右尖括号等转义成实体形式的两种实现方式
2014/05/04 Javascript
使用js画图之饼图
2015/01/12 Javascript
html的DOM中Event对象onblur事件用法实例
2015/01/21 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
关于vue.js弹窗组件的知识点总结
2016/09/11 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
2016/09/17 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
[01:01:18]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#2COL VS LGD
2016/03/03 DOTA
Python实现将目录中TXT合并成一个大TXT文件的方法
2015/07/15 Python
python分割列表(list)的方法示例
2017/05/07 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
耐克奥地利官网:Nike奥地利
2019/08/16 全球购物
异步传递消息系统的作用
2016/05/01 面试题
最新会计专业求职信范文
2014/01/28 职场文书
幼儿园的门卫岗位职责
2014/04/10 职场文书
爱心捐助倡议书
2014/05/19 职场文书
安全责任书怎么写
2014/07/28 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
2014年劳动部工作总结
2014/12/11 职场文书