PS修改过图片上传服务器,富文本编辑器图片上传base64存数据库改为服务器图片路径...
目录
一、安装依赖
npm install quill-image-super-solution-module --save
PS:如果不想npm引入可以直接把quill-image-super-solution-module开源项目中的index.js下载下来,丢到自己的项目中(我自己用的是这种方式,方便自己修改js)
二、新建组件
import { getToken } from "@/utils/auth";
import "quill/dist/quill.core.css";
import "quill/dist/quill.snow.css";
import "quill/dist/quill.bubble.css";
import { quillEditor, Quill } from "vue-quill-editor";
import { container, ImageExtend, QuillWatch } from "@/components/EditorDc/js";
Quill.register("modules/ImageExtend", ImageExtend);
export default {
name: "EditorDC",
props: {
value: {
type: [String, Number],
default: "",
},
},
components: { quillEditor },
data() {
return {
editorValue: "",
// 富文本框参数设置
editorOption: {
placeholder: "请输入内容",
modules: {
ImageExtend: {
// 可选参数 是否显示上传进度和提示语
loading: true,
// 图片参数名
name: "file",
// 可选参数 图片大小,单位为M,1M = 1024kb
size: 2,
// 服务器地址, 如果action为空,则采用base64插入图片
action: process.env.VUE_APP_BASE_API + "/common/uploadImage",
// 可选 可上传的图片格式
// Optional, uploadable image format
accept: "image/jpg, image/png, image/gif, image/jpeg, image/bmp, image/x-icon",
// response 为一个函数用来获取服务器返回的具体图片地址
// 例如服务器返回 {code: 200; data:{ url: 'baidu.com'}}
response: (res) => {
return res.fileName;
},
// 可选参数 设置请求头部
headers: (xhr) => {
xhr.setRequestHeader("Authorization", 'Bearer ' + getToken());
},
// 图片超过大小的回调
sizeError: () => {
alert("图片大小超过 2 M");
},
// 可选参数 自定义开始上传触发事件
start: () => {},
// 可选参数 自定义上传结束触发的事件,无论成功或者失败
end: () => {},
// 可选参数 上传失败触发的事件
error: () => {},
// 可选参数 上传成功触发的事件
success: () => {},
// 可选参数 选择图片触发,也可用来设置头部,但比headers多了一个参数,可设置formData
change: (xhr, formData) => {},
},
toolbar: {
// container为工具栏,此次引入了全部工具栏,也可自行配置
container: container,
handlers: {
image: function() {
// 劫持原来的图片点击按钮事件
QuillWatch.emit(this.quill.id);
},
},
},
},
},
};
},
watch: {
value: {
handler(val) {
this.editorValue = val;
},
immediate: true,
},
editorValue(val) {
this.$emit("input", val);
},
},
methods: {
onEditorChange({ editor, html, text }) {
this.editorValue = html;
},
}
};
.editor, .ql-toolbar {
white-space: pre-wrap!important;
line-height: normal !important;
}
.quill-img {
display: none;
}
.ql-editor{
height: 200px;
}
.ql-snow .ql-tooltip[data-mode="link"]::before {
content: "请输入链接地址:";
}
.ql-snow .ql-tooltip.ql-editing a.ql-action::after {
border-right: 0px;
content: "保存";
padding-right: 0px;
}
.ql-snow .ql-tooltip[data-mode="video"]::before {
content: "请输入视频地址:";
}
.ql-snow .ql-picker.ql-size .ql-picker-label::before,
.ql-snow .ql-picker.ql-size .ql-picker-item::before {
content: "14px";
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="small"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="small"]::before {
content: "10px";
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="large"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="large"]::before {
content: "18px";
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="huge"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="huge"]::before {
content: "32px";
}
.ql-snow .ql-picker.ql-header .ql-picker-label::before,
.ql-snow .ql-picker.ql-header .ql-picker-item::before {
content: "文本";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
content: "标题1";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
content: "标题2";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
content: "标题3";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
content: "标题4";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
content: "标题5";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
content: "标题6";
}
.ql-snow .ql-picker.ql-font .ql-picker-label::before,
.ql-snow .ql-picker.ql-font .ql-picker-item::before {
content: "标准字体";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="serif"]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value="serif"]::before {
content: "衬线字体";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="monospace"]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value="monospace"]::before {
content: "等宽字体";
}
三、组件引入
import EditorDc from '@/components/EditorDc/index';
components: {
EditorDc
},
四、问题整理
1、若依中图片无法回显
2、配置nginx后403
标签:picker,文本编辑,base64,snow,value,before,data,ql,图片
来源: https://blog.csdn.net/qq_19309473/article/details/116274990
PS修改过图片上传服务器,富文本编辑器图片上传base64存数据库改为服务器图片路径...相关推荐
- element-tiptap富文本编辑器,上传本地图片
因为通过富文本编辑器上传本地图片,都会直接转成base64格式的,我们可以先上传到服务器,再从服务器返回的URL拿到给富文本框展示(引入我就不说了,直接看我上篇文章有说到过) data () {// ...
- kindeditor java上传_富文本编辑器kindeditor上传图片的配置方法
[导读]这篇文章主要介绍了使用富文本编辑器上传图片实例详解的相关资料,需要的朋友可以参考下 富文本编辑器上传图片 一.导入kindeditor的js 二.将kindeditor与一个文本域textar ...
- JavaWeb-10 (项目案例7 文件上传与富文本编辑器)
一.Web文件上传与下载 ① 概述 将本地文件上传到服务器端,从服务器端下载文件到本地的过程.例如目前网站需要上传头像.上传下载图片或网盘等功能都是利用文件上传下载功能实现的. ② 原理 (1) 文件 ...
- 结合element-ui实现文件上传以及富文本编辑器的使用
一.配置文件上传两个注意事项 1.action属性必须是绝对路径 2.手动配置请求头headers 完整代码: <el-uploadaction="http://www.ysqorz. ...
- java实现在线富文本编辑器,并传格式数据给后端
做了一个简易在线的富文本编辑器,前端是html,后台是Java 前端代码: <html lang="en" xmlns:th="http://www.thymele ...
- layui后台管理、图片裁切、cropper富文本编辑器实现
需求:后台管理系统一般都会有图文混排功能(比如新闻应用,电商商品详情),这个一般使用富文本编辑器来实现:还有一个就是图片的裁切(比如用户的头像,比如博客的封面),因为在开发这两个功能的时候,也遇到了很 ...
- 富文本编辑器tinymce支持从word复制粘贴保留格式和图片的插件powerpaste
公司做的项目需要用到粘贴Word功能.就是将word内容一键粘贴到网页编辑器(在线富文本编辑器)中.Chrome+IE默认支持粘贴剪切板中的图片,但是我要粘贴的文章存在word里面,图片多达数十张,我 ...
- 富文本编辑器iceEditor中上传word并回显
项目中有需求,用户通过全选word中的图片和文字,然后直接粘贴到富文本编辑器中,可以正常显示,但是实际开发中发现word多图片粘上去的时候图片全部都是file本地路径,无法正常显示,于是考虑另一种思路 ...
- css wangeditor 修改_内容复制到wangEditor富文本编辑器样式排版错误重置方法
从网站或者其他地方复制内容到wangEditor富文本编辑器样式排版错误解决方案 从网站或者其他地方复制内容到wangEditor富文本编辑器样式排版错误,粘贴到wangEditor时鼠标右击选择&q ...
最新文章
- 微信官方数据披露:哪些文章更受朋友圈欢迎
- 在使用selenium,Chrome无界面浏览模式与自定义插件加载问题
- 《白鹿原》金句摘抄(三)
- Response.Redirect 编码的问题
- JAVA中创建的redis对象_详解Java在redis中进行对象的缓存
- PADS无模命令总结
- c++编程求解二元二次方程组_一道俄罗斯高难度解方程组题,错误率达99%+,中国学霸:确实很难...
- 搭建携程Apollo分布式配置中心
- 计算机答辩ppt演讲稿,毕业答辩PPT演讲稿范文ppt课件
- 射线法判断点在多边形内适用范围_重庆球墨铸铁X射线实时成像实时成像系统真诚合作_丹东华日电气...
- 教程 | 做一个自己专属的本地 BLAST 数据库
- 长时间看电脑,眼睛疼的原因和治疗方法
- 蓝桥杯 ADV-222 7-2求arccos值
- 连续四天!2018杭州·云栖大会你可以...
- java 多线程高级,java 多线程高级(传统多线程)
- word 文档如何加密
- 人月神话 中文版 pdf
- drf使用mongodb开发vsp平台设计
- 学习力是这个时代的终极竞争力
- 13.微信小程序(JS逻辑文件)
热门文章
- linux makefile 只能使用Tab键进行文本缩进
- linux 系统运行状况 shell命令 watch 监控进程是否存在
- Linux 2.6 中的直接 I/O 技术
- Openstack-mitakaCentos7.2双节点搭建--(一)基础服务搭建
- android 获取应用内存大小,如何在Android中获取当前内存使用量?
- mysql怎样删除上一行_mysql如何删除第一行数据
- nginx reload内存碎片问题-(一)
- 泛域名PHP,泛域名实现无限二级域名功能
- freebsd mysql 安装_Freebsd中mysql安装及使用笔记-阿里云开发者社区
- 服务器的文件共享,服务器文件共享设置