115 lines
5.1 KiB
Markdown
115 lines
5.1 KiB
Markdown
|
|
# 上传到七牛云存储
|
|||
|
|
|
|||
|
|
完整的 demo 请参见 https://github.com/wangfupeng1988/js-sdk ,可下载下来本地运行 demo
|
|||
|
|
|
|||
|
|
> 注意:配置了上传七牛云存储之后,**无法再使用插入网络图片**
|
|||
|
|
|
|||
|
|
核心代码如下:
|
|||
|
|
|
|||
|
|
```js
|
|||
|
|
var E = window.wangEditor
|
|||
|
|
var editor = new E('#div1')
|
|||
|
|
// 允许上传到七牛云存储
|
|||
|
|
editor.customConfig.qiniu = true
|
|||
|
|
editor.create()
|
|||
|
|
|
|||
|
|
// 初始化七牛上传
|
|||
|
|
uploadInit()
|
|||
|
|
|
|||
|
|
// 初始化七牛上传的方法
|
|||
|
|
function uploadInit() {
|
|||
|
|
// 获取相关 DOM 节点的 ID
|
|||
|
|
var btnId = editor.imgMenuId;
|
|||
|
|
var containerId = editor.toolbarElemId;
|
|||
|
|
var textElemId = editor.textElemId;
|
|||
|
|
|
|||
|
|
// 创建上传对象
|
|||
|
|
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://7xrjl5.com1.z0.glb.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: textElemId, //拖曳上传区域元素的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) {
|
|||
|
|
// 显示进度
|
|||
|
|
printLog('进度 ' + 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.cmd.do('insertHtml', '<img src="' + sourceLink + '" style="max-width:100%;"/>')
|
|||
|
|
},
|
|||
|
|
'Error': function(up, err, errTip) {
|
|||
|
|
//上传出错时,处理相关的事情
|
|||
|
|
printLog('on Error');
|
|||
|
|
},
|
|||
|
|
'UploadComplete': function() {
|
|||
|
|
//队列文件处理完毕后,处理相关的事情
|
|||
|
|
printLog('on UploadComplete');
|
|||
|
|
}
|
|||
|
|
// 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
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 封装 console.log 函数
|
|||
|
|
function printLog(title, info) {
|
|||
|
|
window.console && console.log(title, info);
|
|||
|
|
}
|
|||
|
|
```
|