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

智能推荐

unit test 之mock 用法_unittest中的mock_liuskyter的博客-程序员秘密

功能介绍好的编码习惯都应该为每一行代码做覆盖测试,但有些时候代码处理的是从网络上获取的内容,或者设备的返回,比如获取交换机路由器的运行结果,或者从网络上获取页面等等。这些动作要么需要联网,要么需要设备,但实际上我们只是想测试代码正确性而已,注重的是对返回的内容的处理而不必非要有实际设备。mock 模块就是在单元测试中模拟部分代码的模块,比如某个函数需要调用其他函数,这个时候我们可以模拟这个...

查看英伟达显卡信息,解决nvidia-smi命令报错_STU_11wxzou的博客-程序员秘密

跑训练的时候,提示cuda不存在,nvidia-smi报错:NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.装过nvidia 显卡驱动了,nvidia-smi报错,避免重装驱动的繁琐,找到以下解决方案:先查看自己之前安装的驱动版本ls /usr/src

win10安装steam有损计算机,win10系统steam磁盘写入错误怎么办 steam磁盘写入错误的解决教程..._山山笔记的博客-程序员秘密

如何修复Win10系统Steam磁盘写入错误呢?Steam是一个非常知名的游戏平台,用户可以在平台上购买、下载、安装游戏,大大方便了众多游戏玩家。最近有Win10系统小伙伴使用Steam时遇到了Steam磁盘写入错误的情况,那么怎么修复win10系统steam磁盘写入错误呢?因为造成steam磁盘写入错误的原因很多,所以这里会给大家详解的介绍五种可行的解决方法!希望大家喜欢!Win10系统修复St...

JS对象数组排序_js数组对象取消按子集数量来排序_upupzhu的博客-程序员秘密

我这个是根据子集长度来排序的,按需求更改 let videos = res.data; var compare = funcvtion (obj1, obj2) { var val1 = obj1.videoUps.length; var val2 = obj2.videoUps.length; ...

java 找不到或无法加载类_java 错误:找不到或无法加载主类的解决办法_weixin_39644377的博客-程序员秘密

此类错误的常见解决办法:1、是因为.java文件不在项目的src路径内,也就是说源代码未被eclipse编译,字节码不存在无法运行了在项目名上右键 -&gt; Builder Path -&gt; Configure Build Path -&gt; 选择Source面板 再点Add Folder, 把源代码所在的包路径的上层目录加进来,而且如果你是把两个类写在一个文件里的话,你在右键选择Run ...

C语言实现栈操作(初始化、入栈、出栈、取栈顶元素、获取栈中元素个数、判空、扩容、销毁)_获取栈元素个数_有你够了的博客-程序员秘密

1.用C语言实现栈常用操作:(1)、初始化(2)、入栈(3)、出栈(4)、取栈顶元素(5)、获取栈中元素个数(6)、判空(7)、扩容(8)、销毁代码如下:#include"stack.h"#include&lt;assert.h&gt;#include&lt;malloc.h&gt;#include&lt;stdio.h&gt;//初始化void StackInit(Stack* ps){ assert(ps); ps-&gt;array = (DataType*)m

随便推点

hdu_1048_The Hardest Problem Ever_201311052052_weixin_30268921的博客-程序员秘密

The Hardest Problem EverTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 13590 Accepted Submission(s): 6212 Problem DescriptionJulius C...

Android下使用dlopen函数动态调用.so链接库_玄冬Wong的博客-程序员秘密

原文:http://hi.baidu.com/mcu99/blog/item/389a6fde38f69950cdbf1a75.html在这篇文章(【09.03.25】Linux环境中dlopen函数的简单应用)中。实现了在UBUNTU LINUX环境下使用dlopen函数动态调用.so链接库。但是也提到了在Android下未能成功。由于Android也是使用linux内核,因此估计程序本身可能并

iOS11 适配之导航栏、tableView、searchBar遇到的bug_ios 搜索框适配_软件iOS开发的博客-程序员秘密

最近刚接手了个项目,在iOS11之前都没有问题,但是在iOS11上却出现了个别屏幕适配问题,其中包括:1、push进入下一个VC之后,导航栏在会往上移部分距离,大概20像素;2、VC中的tableView向下移动部分距离,以及cell直接的间隔会无故拉大;3、加载webView的时候会向下移动部分距离;4、放在导航栏上面的searchBar消失不见。虽然网上很多文章介绍解决的方法,但是我还是查阅了

Python人脸识别和对比_python 人脸比对_独孤岁月的博客-程序员秘密

直接上代码import face_recognitionimport numpy as npimport cv2def face_re(face1, face2): ''' 对比两张图片是否属于同一人 ''' face_encoding1 = [] is_face1 = face_recognition.face_encodings(face_recognition.load_image_file(face1)) if (len(is_face1) &lt;= 0

使用ZipArchive压缩打包想要的文件夹或文件_cloudsben的博客-程序员秘密

PHP文件打包成zip,包含文件夹使用ZipArchive class开始先new一个$zip,$zip = new ZipArchive;然后把(此文件如果是文件夹这里循环)文件夹路径,和$zip,还有就是初始的文件夹了 3. 循环文件夹文件 4. 去掉文件夹中的.和.. 5. 再判断此路径还有文件夹,如果是文件夹,再次执行本函数 6. 如果不是加入文件完成后closedir()

目标检测-YOLO算法实现_基于yolo的目标检测实现要素_fourPieces的博客-程序员秘密

前段时间跟着吴恩达大牛的视频学了深度学习,做了课后的作业“YOLO算法实现自动驾驶的车辆检测”。最近面试被问到YOLO算法的Anchor box是如何实现的,突然发现自己对YOLO算法还是不够深入了解,很感谢面试官的提问,让我发现了很多不足。下面就YOLO算法进行梳理。 参考博客: YOLO(You Only Look Once)算法详解 YOLO算法的优点: 1. YOLO的速度非常快。...

推荐文章

热门文章

相关标签