集成七牛云存储
wangEditor编辑器从v2.0.14
版本开始,将支持使用七牛云存储上传图片。
但是,在使用编辑器集成七牛云存储之前,还需要阅读七牛云存储javascript sdk的文档,来了解七牛云存储js sdk的使用方法。否则也无法顺利使用。
本地运行一个wangEditor上传七牛的demo
作者在github专门fork了七牛官网js-sdk的demo,然后通过修改,制作了一个wangEditor上传七牛的demo,点击这里,可以看到如何在本地运行这个demo。
代码演示
以下代码将演示如何在wangEditor中使用七牛云存储,注意看代码中的注释。详细的代码,可去https://github.com/wangfupeng1988/js-sdk/blob/master/demo/views/wangEditor.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>