vue中wangEditor的使用和七牛云图片的上传_sinat_36127729的博客-程序员秘密

技术标签: wangEditor  vue  七牛云图片上传  

wangEditor的使用:

wangEditor —— 轻量级 web 富文本编辑器,配置方便,使用简单。支持 IE10+ 浏览器。
npm安装:

$ npm install wangeditor --save-dev

引入依赖包:

   <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
   <script type="text/javascript" src="./libs/plupload.full.min.js"></script>
   <script type="text/javascript" src="./libs/qiniu.js"></script>
<template>
  <div class="editor">
    <div ref="editor"></div>
  </div>
</template>

<script>
import Editor from 'wangeditor'
import api from '@/request/api'

export default {
     
  name: 'Editor',
  props: {
     
    editorContent: {
      // 富文本内容
      type: String,
      default: ''
    }
  },
  data () {
     
    return {
     
      uptoken: null
    }
  },
  mounted () {
     
    var editor = new Editor(this.$refs.editor)
    // onchange事件
    editor.customConfig.onchange = (html) => {
     
      console.log('onchange', html)
      this.$emit('changeContent', html)
    }
    // 自定义菜单配置
    editor.customConfig.menus = [
      'head',  // 标题
      'bold',  // 粗体
      'fontSize',  // 字号
      'fontName',  // 字体
      'italic',  // 斜体
      'underline',  // 下划线
      'strikeThrough',  // 删除线
      'foreColor',  // 文字颜色
      'backColor',  // 背景颜色
      'link',  // 插入链接
      'list',  // 列表
      'justify',  // 对齐方式
      'quote',  // 引用
      'emoticon',  // 表情
      'image',  // 插入图片
      'table',  // 表格
      'video',  // 插入视频
      'code',  // 插入代码
      'undo',  // 撤销
      'redo'  // 重复
    ]
    // 自定义字体
    editor.customConfig.fontNames = [
      '宋体',
      '微软雅黑',
      'Arial',
      'Tahoma',
      'Verdana'
    ]
    // 使用 base64 保存图片
    editor.customConfig.uploadImgShowBase64 = false
    
    // 隐藏“网络图片”tab
    editor.customConfig.showLinkImg = false

    // 允许上传到七牛云存储
    editor.customConfig.qiniu = true
    
    editor.create()
  
    // 编辑富文本
    if (this.editorContent) {
     
      editor.txt.html(this.editorContent)
    }
    // 初始化
    this.uploadInit(editor)
  },
  methods: {
     
    uploadInit (editor) {
     
      // 获取相关 DOM 节点的 ID
      var btnId = editor.imgMenuId
      var containerId = editor.toolbarElemId
      var textElemId = editor.textElemId
      // 创建上传对象
      api.upload().then(res => {
     
        var uploader = window.Qiniu.uploader({
     
          runtimes: 'html5,flash,html4',    //上传模式,依次退化
          browse_button: btnId,       //上传选择的点选按钮,**必需**
          uptoken: res.data.data,
          unique_names: true,
          domain: 'http://phx1pmugn.bkt.clouddn.com/', //bucket 域名,下载资源时用到,**必需**
          container: containerId,           //上传区域DOM ID,默认是browser_button的父元素,
          max_file_size: '100mb',           //最大文件体积限制
          filters: {
     
            mime_types: [
              //只允许上传图片文件 (注意,extensions中,逗号后面不要加空格)
              {
      title: "图片文件", extensions: "jpg,gif,png,bmp" }
            ]
          },
          max_retries: 3, //上传失败最大重试次数
          dragdrop: true, //开启可拖曳上传
          drop_element: textElemId, //拖曳上传区域元素的ID,拖曳文件或文件夹后可触发上传
          chunk_size: '4mb', //分块上传时,每片的体积
          auto_start: true,  //选择文件后自动上传,若关闭需要自己绑定事件触发上传
          init: {
     
            'FileUploaded': function(up, file, info) {
          
              var domain = up.getOption('domain')
              var res = window.$.parseJSON(info)
              var sourceLink = domain + res.key //获取上传成功后的文件的Url
              // 插入图片到editor
              editor.cmd.do('insertHtml', '<img src="' + sourceLink + '" style="max-width:100%;"/>')
            }
          }
        })
      })
    }
  }
}
</script>

<style lang="less">
.w-e-toolbar {
     
  flex-wrap: wrap;
  justify-content: space-between;
}
</style>

<style lang="less" scoped>
.editor {
     
  width: 100%;
  height: 100vh;
  /* table 样式 */
  table {
     
    border-top: 1px solid #ccc;
    border-left: 1px solid #ccc;
  }
  table td,
  table th {
     
    border-bottom: 1px solid #ccc;
    border-right: 1px solid #ccc;
    padding: 3px 5px;
  }
  table th {
     
    border-bottom: 2px solid #ccc;
    text-align: center;
  }
  /* blockquote 样式 */
  blockquote {
     
    display: block;
    border-left: 8px solid #d0e5f2;
    padding: 5px 10px;
    margin: 10px 0;
    line-height: 1.4;
    font-size: 100%;
    background-color: #f1f1f1;
  }
  /* code 样式 */
  code {
     
    display: inline-block;
    *display: inline;
    *zoom: 1;
    background-color: #f1f1f1;
    border-radius: 3px;
    padding: 3px 5px;
    margin: 0 3px;
  }
  pre code {
     
    display: block;
  }
  /* ul ol 样式 */
  ul, ol {
     
    margin: 10px 0 10px 20px;
  }
}
</style>

可能遇到的问题:

首先要通过接口获取七牛云存储的uptoken

https://up-z2.qbox.me/ 接口返回token无效,这时候要检查你的七牛云账号的设置

  1. 七牛云存储官方文档进行设置
    七牛云上传设置

效果演示:

wangeditor的结合七牛云实现图片上传

转载请注明出处 : https://blog.csdn.net/sinat_36127729/article/details/85061854

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sinat_36127729/article/details/85061854

智能推荐

VNC 复制粘贴_novnc复制粘贴_普通网友的博客-程序员秘密

在Windows上使用VNC打开Linux,将Windows上的内容复制粘贴到Linux上1. 首先在VNC相应的窗口的Terminal上执行以下命令:vncconfig -nowin&2.将Windows上的内容复制后,在VNC窗口里面ctrl+shift+V,就可以粘贴了。

Typora使用教程_typora如何阅读epub_Famiglistimott的博客-程序员秘密

Typora 一直是我认为桌面端笔记应用应有的终极形态。用我之前 一篇文章 中的话来说就是,「它的功能之强大、设计之冷静、体验之美妙、理念之先进,我认为值得所有笔记应用厂商学习。」但一件很尴尬的事情是,由于它极简的设计理念,有许多使用者并没能完全地了解到 Typora 的全部强大功能。我想在这篇文章中由浅入深地介绍 Typora 的功能亮点。无论你从未用过 Typora,还是已经体验了很久,我相信你都能在这篇文章中发现 Typora 新的惊喜。Typora 是什么?Typora 是一款支持实时预览的 Mar

www.ty66.php,韬轩阁_恒大名宿王上源的博客-程序员秘密

前言:内容为个人解题代码,如有错误请评论留言- -。第一题标题: 购物单小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。取款机...

大型网站架构系列:负载均衡详解_机智的埃努的博客-程序员秘密

大型网站架构系列:负载均衡详解面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高,海量数据的问题。从单机网站到分布式网站,很重要的区别是业务拆分和分布式部署,将应用拆分后,部署到不同的机器上,实现大规模分布式...

微信小程序开发零基础入门_微信小程序开发零基础入门我代码在哪_大圣哥哥阿的博客-程序员秘密

#需要本书的全部内容请看完本篇文章喔,下方有获取方式来得喔以上小编所介绍的全部相关的笔记资料都已整理成册,不论是Redis面试+Redis实战pdf,还是MongDB快速上手+MongDB集群安全等手写pdf笔记,想白嫖都很so easy!!——如果你get到了,那就点个赞转发支持一波吧!——整理不易,白嫖私信我领取源码学习资料,100%回复分享!——祝前程似锦,offer不断,好好学习,天天向上!——也可以添加小助手vx:xcw18874131605 获取更多资料哦(备注:C..

R语言机器学习之caret包运用_weixin_34059951的博客-程序员秘密

在大数据如火如荼的时候,机器学习无疑成为了炙手可热的工具,机器学习是计算机科学和统计学的交叉学科,旨在通过收集和分析数据的基础上,建立一系列的算法,模型对实际问题进行预测或分类。R语言无疑为我们提供了很好的工具,它正是计算机科学和统计科学结合的产物,开源免费,相对于Python、Orange Canvas、Weka、Kinme这些免费的数据挖掘软件来说,更容易上手,统计图形也更加美观。...

随便推点

ICA3PP 2020_jdz_六金的博客-程序员秘密

ICA3PP 2020OCT. 2-4, NEW YORK, USAConference Website:ICA3PP 2020Conference Promo:ICA3PP 2020ICA3PP is a premier conference on Algorithms and Architectures for Parallel Processing. The conference ...

Hive的存储方式和压缩方式,textfile、orc、parquet、snappy、zlib 等等..._hive zlib_奇迹虎虎的博客-程序员秘密

Hive的存储方式和压缩方式,textfile、orc、parquet、snappy、zlib 等等...

docker swarm集群_dalianpai的博客-程序员秘密

swarm介绍Swarm这个项目名称特别贴切。在Wiki的解释中,Swarm behavior是指动物的群集行为。比如我们常见的蜂群,鱼群,秋天往南飞的雁群都可以称作Swarm behavior。Swarm项目正是这样,通过把多个Docker Engine聚集在一起,形成一个大的dockerengine,对外提供容器的集群服务。同时这个集群对外提供Swarm API(命令,docker...

linux文件IO:mmap 、read/write、fread/fwrite_qccz123456的博客-程序员秘密

mmap与read/write两条路线对文件的访问比较我们知道无论是通过mmap或read/write访问文件在内核中都必须经过缓存, 当需要从文件读写内容时,都经过内存拷贝的方式与内核中的缓存进行通讯。用read/write方式,用户须向内核指定要读多少,内核再把得到的内容从内核缓存拷向用户空间;写也须要有一个大致如此的过程。mmap的作用是通过把文件的某一块内容映射到用户空间上,...

数据库时间字段为varchar格式如何只取月日?_不及格的程序猿的博客-程序员秘密

1024这个伟大的程序猿节日,遇到最尴尬的问题。处理时间问题。数据库的格式:前端想只取月日这两个  11-24数组处理:先转化为时间戳然后再取月日。打印格式:OK!!! ...

汇编开发(八):结构体与宏_mazaiting的博客-程序员秘密

1. 结构体结构是给予逻辑相关的变量组的模板或模式。 结构中的变量称为字段。 程序语句可以作为单个实体访问结构,也可以访问单个字段。 结构通常包含不同类型的字段。 联合还将多个标识符组合在一起,但标识符与内存中的相同区域重叠。COORD 结构体COORD 结构在Windows API中定义屏幕的坐标X和Y,字段X的偏移为0,字段Y的偏移为2.C...

推荐文章

热门文章

相关标签