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 相关文章推荐
IE本地存储userdata的一个bug说明
Jul 01 Javascript
JQuery工具函数汇总
Jun 15 Javascript
Node.js模块封装及使用方法
Mar 06 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
May 31 Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
Sep 04 Javascript
Angular2入门教程之模块和组件详解
May 28 Javascript
vue中将网页打印成pdf实例代码
Jun 15 Javascript
详解ES6通过WeakMap解决内存泄漏问题
Mar 09 Javascript
JS实现Cookie读、写、删除操作工具类示例
Aug 28 Javascript
IDEA安装vue插件图文详解
Sep 26 Javascript
vue把输入框的内容添加到页面的实例讲解
Nov 11 Javascript
vue+Element-ui前端实现分页效果
Nov 15 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
ftp类(myftp.php)
2006/10/09 PHP
PHP格式化MYSQL返回float类型的方法
2016/03/30 PHP
laravel执行php artisan migrate报错的解决方法
2019/10/09 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
JavaScript静态的动态
2006/09/18 Javascript
jquery全选/全不选/反选另一种实现方法(配合原生js)
2013/04/07 Javascript
javascript中的onkeyup和onkeydown区别介绍
2013/04/28 Javascript
JavaScript实现多维数组的方法
2013/11/20 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
Windows下python2.7.8安装图文教程
2016/05/26 Python
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
python 动态加载的实现方法
2017/12/22 Python
深入解析神经网络从原理到实现
2019/07/26 Python
详解Django配置优化方法
2019/11/18 Python
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
BLACKMORES澳洲官网:澳大利亚排名第一的保健品牌
2018/09/27 全球购物
办公室年终个人自我评价
2013/10/28 职场文书
护士求职推荐信范文
2013/11/23 职场文书
幼儿园老师辞职信
2014/01/20 职场文书
卫生巾广告词
2014/03/18 职场文书
护理专业毕业生自荐书
2014/05/24 职场文书
读群众路线的心得体会
2014/09/03 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
听证通知书
2015/04/24 职场文书
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技