wangEditor编辑器从`v2.0.14`版本开始,将支持使用[七牛云存储](http://www.qiniu.com/)上传图片。
但是,在使用编辑器集成七牛云存储之前,还需要阅读[七牛云存储javascript sdk](http://developer.qiniu.com/code/v6/sdk/javascript.html)的文档,来了解七牛云存储js sdk的使用方法。否则也无法顺利使用。
----
**本地运行一个wangEditor上传七牛的demo**
作者在github专门fork了[七牛官网js-sdk的demo](https://github.com/qiniu/js-sdk),然后通过修改,制作了一个[wangEditor上传七牛的demo](https://github.com/wangfupeng1988/js-sdk),点击[这里](https://github.com/wangfupeng1988/js-sdk#3-本地运行这个demo),可以看到如何在本地运行这个demo。
---
**代码演示**
以下代码将演示如何在wangEditor中使用七牛云存储,注意看代码中的注释。详细的代码,可去[https://github.com/wangfupeng1988/js-sdk/blob/master/demo/views/wangEditor.html](https://github.com/wangfupeng1988/js-sdk/blob/master/demo/views/wangEditor.html)查看。
```html
<div id="editor-container" class="container">
<div id="editor-trigger">
<p>请输入内容...</p>
</div>
</div>
<script type="text/javascript" src="../js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="../wangEditor/js/wangEditor.js"></script>
<script type="text/javascript" src="../js/plupload/plupload.full.min.js"></script>
<script type="text/javascript" src="../js/plupload/i18n/zh_CN.js"></script>
<script type="text/javascript" src="/js/qiniu.js"></script>
<script type="text/javascript">
// 封装 console.log 函数
function printLog(title, info) {
window.console && console.log(title, info);
}
// 初始化七牛上传
function uploadInit() {
// this 即 editor 对象
var editor = this;
// 触发选择文件的按钮的id
var btnId = editor.customUploadBtnId;
// 触发选择文件的按钮的父容器的id
var containerId = editor.customUploadContainerId;
// 创建上传对象
var uploader = Qiniu.uploader({
runtimes: 'html5,flash,html4', //上传模式,依次退化
browse_button: btnId, //上传选择的点选按钮,**必需**
uptoken_url: '/uptoken',
//Ajax请求upToken的Url,**强烈建议设置**(服务端提供)
// uptoken : '<Your upload token>',
//若未指定uptoken_url,则必须指定 uptoken ,uptoken由其他程序生成
// unique_names: true,
// 默认 false,key为文件名。若开启该选项,SDK会为每个文件自动生成key(文件名)
// save_key: true,
// 默认 false。若在服务端生成uptoken的上传策略中指定了 `sava_key`,则开启,SDK在前端将不对key进行任何处理
domain: 'http://xxx.xxx.xxx.xxx.clouddn.com/',
//bucket 域名,下载资源时用到,**必需**
container: containerId, //上传区域DOM ID,默认是browser_button的父元素,
max_file_size: '100mb', //最大文件体积限制
flash_swf_url: '../js/plupload/Moxie.swf', //引入flash,相对路径
filters: {
mime_types: [
//只允许上传图片文件 (注意,extensions中,逗号后面不要加空格)
{ title: "图片文件", extensions: "jpg,gif,png,bmp" }
]
},
max_retries: 3, //上传失败最大重试次数
dragdrop: true, //开启可拖曳上传
drop_element: 'editor-container', //拖曳上传区域元素的ID,拖曳文件或文件夹后可触发上传
chunk_size: '4mb', //分块上传时,每片的体积
auto_start: true, //选择文件后自动上传,若关闭需要自己绑定事件触发上传
init: {
'FilesAdded': function(up, files) {
plupload.each(files, function(file) {
// 文件添加进队列后,处理相关的事情
printLog('on FilesAdded');
});
},
'BeforeUpload': function(up, file) {
// 每个文件上传前,处理相关的事情
printLog('on BeforeUpload');
},
'UploadProgress': function(up, file) {
// 显示进度条
editor.showUploadProgress(file.percent);
},
'FileUploaded': function(up, file, info) {
// 每个文件上传成功后,处理相关的事情
// 其中 info 是文件上传成功后,服务端返回的json,形式如
// {
// "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98",
// "key": "gogopher.jpg"
// }
printLog(info);
// 参考http://developer.qiniu.com/docs/v6/api/overview/up/response/simple-response.html
var domain = up.getOption('domain');
var res = $.parseJSON(info);
var sourceLink = domain + res.key; //获取上传成功后的文件的Url
printLog(sourceLink);
// 插入图片到editor
editor.command(null, 'insertHtml', '<img src="' + sourceLink + '" style="max-width:100%;"/>')
},
'Error': function(up, err, errTip) {
//上传出错时,处理相关的事情
printLog('on Error');
},
'UploadComplete': function() {
//队列文件处理完毕后,处理相关的事情
printLog('on UploadComplete');
// 隐藏进度条
editor.hideUploadProgress();
}
// Key 函数如果有需要自行配置,无特殊需要请注释
//,
// 'Key': function(up, file) {
// // 若想在前端对每个文件的key进行个性化处理,可以配置该函数
// // 该配置必须要在 unique_names: false , save_key: false 时才生效
// var key = "";
// // do something with key here
// return key
// }
}
});
// domain 为七牛空间(bucket)对应的域名,选择某个空间后,可通过"空间设置->基本设置->域名设置"查看获取
// uploader 为一个plupload对象,继承了所有plupload的方法,参考http://plupload.com/docs
}
// 生成编辑器
var editor = new wangEditor('editor-trigger');
editor.config.customUpload = true; // 设置自定义上传的开关
editor.config.customUploadInit = uploadInit; // 配置自定义上传初始化事件,uploadInit方法在上面定义了
editor.create();
</script>
```
- 关于wangEditor
- 遇到问题如何解决和提问【重要】
- 开始使用
- 下载
- 创建页面
- 生成编辑器(使用ID)
- 生成编辑器(使用element)
- 调整尺寸
- 销毁与恢复
- 一个页面多个编辑器
- 内容处理
- 初始化内容
- 获取内容
- 追加内容
- 清空内容
- 用 editor.$txt 做其他内容处理
- onchange事件
- 禁用/启用
- 参数配置
- 自定义菜单
- 自定义颜色、字体、字号
- 自定义表情
- 切换语言
- 百度地图key
- 菜单栏吸顶
- 配置全屏的z-index
- 关闭浏览器打印log
- 关闭过滤javascript
- 关闭粘贴过滤样式
- 只粘贴纯文本
- 插入代码-配置默认语言
- 自定义编辑器样式
- 自定义颜色
- 自定义菜单UI
- 自定义表格、引用、代码的样式
- 代码高亮样式
- 图片上传
- 使用前必读
- 支持情况
- 配置说明
- log提示辅助排错
- 后台代码示例
- C#
- java - 例1
- java - 例2
- php
- nodejs
- python
- 自定义上传事件
- 集成plupload插件
- 集成七牛云存储
- 跨域上传
- 上传图片出错时的解决步骤
- 使用模块定义
- 使用require.js
- 使用seajs
- 使用webpack
- 插件开发
- 对象结构
- 常用API
- 全局API
- 对象API
- 基础API
- 选区API
- 命令API
- 扩展一个菜单
- 『缩进』菜单
- 『行高』菜单
- 『插入符号』菜单
- 开发一个插件
- 常见问题
- 关于markdown
- 关于上传附件
- 关于背景图片
- 关于显示压缩图片
- 集成到React
- 集成到angular
- 集成到vue.js
- 如何避免与项目中的css冲突
- xss过滤
- 如何插入视频链接
- 关于mobile端编辑器
- 查看源码第一行有空格