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 使用手册(七)
Sep 23 Javascript
JQuery弹出层示例可自定义
May 19 Javascript
javascript实现window.print()去除页眉页脚
Dec 30 Javascript
使用angular写一个hello world
Jan 23 Javascript
javascript 动态样式添加的简单实现
Oct 11 Javascript
轻松理解vue的双向数据绑定问题
Oct 30 Javascript
jQuery中的for循环var与let的区别
Apr 21 jQuery
微信小程序点击滚动到指定位置的实现
May 22 Javascript
详解vue路由
Aug 05 Javascript
Vue中component标签解决项目组件化操作
Sep 04 Javascript
JS算法教程之字符串去重与字符串反转
Dec 15 Javascript
Vue实现跑马灯样式文字横向滚动
Nov 23 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简单实现合并2个数字键数组值的方法
2017/05/30 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
利用javascript实现一些常用软件的下载导航
2009/08/03 Javascript
js loading加载效果实现代码
2009/11/24 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
2015/07/31 Javascript
js密码强度校验
2015/11/10 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错
2018/11/06 Javascript
浅谈vue后台管理系统权限控制思考与实践
2018/12/19 Javascript
jQuery实现动态生成年月日级联下拉列表示例
2019/05/11 jQuery
原生js实现俄罗斯方块
2020/10/20 Javascript
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
在Python中使用判断语句和循环的教程
2015/04/25 Python
python函数装饰器用法实例详解
2015/06/04 Python
python添加模块搜索路径方法
2017/09/11 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
选择python进行数据分析的理由和优势
2019/06/25 Python
Python qqbot 实现qq机器人的示例代码
2019/07/11 Python
django模型动态修改参数,增加 filter 字段的方式
2020/03/16 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
Html5 web本地存储实例详解
2016/07/28 HTML / CSS
药学专业个人自我评价
2013/11/11 职场文书
学校十一活动方案
2014/02/01 职场文书
家具商场的活动方案
2014/08/16 职场文书
2014小学语文教师个人工作总结
2014/12/03 职场文书
区域销售经理岗位职责
2015/04/02 职场文书
资金申请报告范文
2015/05/14 职场文书
行政诉讼答辩状
2015/05/21 职场文书
校园开放日新闻稿
2015/07/17 职场文书
记者节感言
2015/08/03 职场文书
党员干部学习心得体会
2016/01/23 职场文书
话题作文之呼唤
2019/12/18 职场文书
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL