首页 > 其他分享 >vue项目中的Tinymce富文本编辑器如何从word中粘贴图片上传到七牛云

vue项目中的Tinymce富文本编辑器如何从word中粘贴图片上传到七牛云

时间:2023-09-17 17:13:02浏览次数:50  
标签:文本编辑 vue word qiniu token file e4% total 上传

Tinymce富文本编辑器粘贴图片时需要上传到自己的空间中才能被打开。

一、首先需要安装引入七牛云

npm install qiniu-js

var qiniu = require('qiniu-js')
// or
import * as qiniu from 'qiniu-js'

二、同时引入客户端生成的token

import {qiniuTokenCreate} from "@/assets/js/qiniu/qiniuTokenCreate"

此处生成token的方法请参考之前的一篇文章:https://blog.csdn.net/u014445517/article/details/95212636

三、在window.tinymce.init中添加属性方法:

// 整合七牛上传
images_upload_handler: (blobInfo, success, failure, progress) => {
// 这个函数主要处理word中的图片,并自动完成上传;
let token=qiniuTokenCreate('image') // 前端自动生成的token
let domain="http://image.i.haierzhongyou.com/" // 下载图片地址
const file = blobInfo.blob() // 得到图片的file对象;

// 限制上传文件的大小为200M
if (file.size > 209715200) {
const cur_size = Math.floor(file.size * 100 / 1024 / 1024) / 100
Message({
message: '上传文件大小不得超过200M 当前文件' + cur_size + 'M ',
type: 'error',
duration: 5 * 1000
})
console.log('上传文件大小不得超过200M 当前文件' + cur_size + 'M ')
return false
}
const observer = {
next: response => {
// 上传进度'+Math.floor(response.total.percent)+'%'
// total.loaded: number,已上传大小,单位为字节。
// total.total: number,本次上传的总量控制信息,单位为字节,注意这里的 total 跟文件大小并不一致。
// total.percent: number,当前上传进度,范围:0~100。

console.log('上传成功')
},
error: err => {
// 上传失败触发
failure('出现未知问题,刷新页面,或者联系程序员')
},
complete: response => {
success(domain + response.key) // 上传成功后,调用success函数传入图片地址
let key = response.hash // 上传文件名
}
}
// 可通过 subscription.unsubscribe() 停止当前文件上传
const putExtra = {
// 文件原文件名
fname: '',
// 用来放置自定义变量
params: {},
// 用来限制上传文件类型,为 null 时表示不对文件类型限制
// 限制类型放到数组里,如 mimeType:
mimeType: ['image/png', 'image/jpeg', 'image/gif']
}
const config = {
// 是否使用 cdn 加速域名,默认false
useCdnDomain: true,
// 上传域名区域,当为 null 或 undefined 时,自动分析上传域名区域
region: qiniu.region.z0
}
/*
file: Blob 对象,上传的文件
key: 文件资源名
token: 上传验证信息,前端通过接口请求后端获得
config: object
*/
// 关键代码
let options = {
quality: 0.92,
noCompressIfLarger: true,
maxWidth: 1000,
maxHeight: 618
}
qiniu.compressImage(file, options).then(data => {
// data : {
// dist: 压缩后输出的 blob 对象,或原始的 file,具体看下面的 options 配置
// width: 压缩后的图片宽度
// height: 压缩后的图片高度
// }
var observable = qiniu.upload(data.dist, observer.complete.key, token,domain, putExtra, config)
var subscription = observable.subscribe(observer) // 上传开始
})
},

最后,复制粘贴word中含图片的文档,查看效果:

 

 

 

参考文章:http://blog.ncmem.com/wordpress/2023/09/17/vue%e9%a1%b9%e7%9b%ae%e4%b8%ad%e7%9a%84tinymce%e5%af%8c%e6%96%87%e6%9c%ac%e7%bc%96%e8%be%91%e5%99%a8%e5%a6%82%e4%bd%95%e4%bb%8eword%e4%b8%ad%e7%b2%98%e8%b4%b4%e5%9b%be%e7%89%87%e4%b8%8a%e4%bc%a0/

欢迎入群一起讨论

 

 

标签:文本编辑,vue,word,qiniu,token,file,e4%,total,上传
From: https://www.cnblogs.com/songsu/p/17709193.html

相关文章

  • Vue学习六:路由进阶
    一、路由的封装抽离目标:将路由模块抽离出来。好处:拆分模块,易于维护。第一步:在src目录下新建一个router目录,在创建一个index.js文件,将先前main.js中的路由代码转移到index.js文件中。(这里需要使用到vue所以需将vue包导入;需修改组件路径,@符号代表绝对路径src;需将路由实例导出)index......
  • 报错error Component name "Index" should always be multi-word vue/multi-word-co
    1、问题说明:在创建组件命名时,引用index.vue的过程中报错;2、报错的原因及分析:其一、报错的全称为:errorComponentname"index"shouldalwaysbemulti-wordvue/multi-word-component-names翻译为:错误组件名称“索引”应始终为多词vue/多词组件名称其二、问题分析:新手在使用......
  • 添加Element ui依赖报错:npm ERR code EPERM,syscall mkdir, npm ERR! path D:\Vue\
    添加Elementui依赖报错:npmERRcodeEPERM,syscallmkdir,npmERR!pathD:\Vue\nodejs\node_cache\_cacache\index-v5\f3\de具体报错信息如下:我这个是在IDEA控制台输入npmielement-ui-S添加elementui依赖时出现的报错解决办法:修改nodejs(安装node的安装地址那里)......
  • TinyMCE富文本编辑器导入word文件内容,使word文件上的的图文内容能正常显示图片
    今天在使用后台管理系统录入富文本数据时,发现从微信等APP上复制过来的图文内容直接粘贴到TinyMCE富文本编辑器上时图片可以正常显示,而从word上复制过来的图文内容,粘贴时只能显示文字,图片内容不能正常显示。查找问题后发现从微信上复制过来的是Base64图片,而从word上复制过来的图片......
  • vue2 使用tinymce编辑器实现上传图片及粘贴word文本保留格式并粘贴图片自动上传
    下载对应的版本 npminstall@tinymce/[email protected]@5.8.2-S然后在node_modules中找到tinymce把整个文件复制下来粘到public中 在组件页面使用根据自己需求进行注释或添加功能<template><divclass="tinymce-editor"><Editor:......
  • 【Vue】关于 The template root requires exactly one element 报错的解决方案
     在<template>内添加<div>总括起来: ......
  • tinymce实现从word直接粘贴并自动上传图片
    背景介绍:tinymce是一款优秀的富文本编辑器。powerpaste是其一款收费插件,能实现word内容无缝粘贴入网页的tinymce中,可保留word的格式以及自动将word中的图片上传至服务器端。使用说明:我默认你们都能在官网下载到tinymce,鉴于部分同学是通过npm安装的,要注意了:npm安装的不行!!!!不能用......
  • vue--day88--缓存路由组件和 两个新的生命周期钩子
    ###10.缓存路由组件 1.作用:让不展示的路由组件保持挂载,不被销毁。 2.具体编码:   ```vue  <keep-aliveinclude="News">     <router-view></router-view>  </keep-alive>  ``` ###11.两个新的生命周期钩子 1.作用:路由组件所独有的两......
  • vue--day86--编程式路由导航
    1.作用:不借助```<router-link>```实现路由跳转,让路由跳转更加灵活 2.具体编码:   ```js  //$router的两个API  this.$router.push({  name:'xiangqing',  params:{  id:xxx,  title:xxx  }  })    this.$router.re......
  • vue3探索——pinia高阶使用
    以下是一些Pinia的其他高阶功能:storeToRefs():响应式解构仓库,保证解构出来的数据是响应式的数据。状态持久化:Pinia并没有内置的状态持久化功能,但你可以使用第三方库或自定义插件来实现状态的持久化。例如,你可以使用 localStorage 或 sessionStorage 来将状态保存在客户端......