成功了,搞了2天。分享一下经验。
首先是把官方的那个例子下载下来,然后照如下的方式修改。
其中tempValue是一个全局变量。
function savetoqiniu() { var uploader = Qiniu.uploader({
runtimes: "html5,flash,html4",
browse_button: "setfile",
save_key:false,
//uptoken: qiniu_uptoken,
get_new_uptoken: true,
uptoken_func:function()
{
tempValue=GetFileInfo();
var res = $.ajax({
type: "get",
data: {
key: tempValue
},
url: "/goods/CkeditorGetUploadToken/",
async: false
});
return JSON.parse(res.responseText).uptoken;
},
//uptoken_url: "/goods/CkeditorGetUploadToken?key=" + tempValue,
domain: qiniu_bucket_domain,
container: "container",
max_file_size: "6mb",
filters: {
mime_types: [{
title: "Image files",
extensions: "jpeg,jpg,gif,png,wbmp"
}]
},
flash_swf_url: "./Moxie.swf",
max_retries: 3,
dragdrop: true,
drop_element: "container",
chunk_size: "4mb",
auto_start: false,
init: {
"PostInit": function() {
document.getElementById("uploadfile").onclick = function() {
//document.getElementById("setfile").style.display = "none";
uploader.start();
return false
}
},
"FilesAdded": function(up, files) {
plupload.each(files,
function(file) {
document.getElementById("fileinfo").innerHTML += '<div id="' + file.id + '">' + file.name + " (" + plupload.formatSize(file.size) + ") <b></b> <i></i></div><br>";
//var key = Math.round(new Date().getTime() / 1000) + "_" + file.name;
//keyQiniuUpload = key;
//Test2();
})
},
"BeforeUpload": function (up, file) { },
"UploadProgress": function(up, file) {
document.getElementById(file.id).getElementsByTagName("b")[0].innerHTML = "<span>" + file.percent + "%</span>"
},
"FileUploaded": function(up, file, info) {
var res = JSON.parse(info);
var sourceLink = qiniu_bucket_domain + "/" + res.key;
document.getElementById(file.id).getElementsByTagName("i")[0].innerHTML = sourceLink;
window.CKEDITOR.tools.callFunction(1, sourceLink, 'ok');
},
"Error": function(up, err, errTip) {},
"UploadComplete": function() {},
"Key": function(up, file) {
var key = tempValue;
console.log(up); return key;
}
}
});
}
另外注意一点,就是KEY要传到后台去的,每次的KEY不同。下面是C#代码。
/// <summary>
/// 获得CKEDITOR上传凭证
/// </summary>
/// <returns></returns>
public ActionResult CkeditorGetUploadToken(string key)
{
string s= UploadUtil.GetUploadToken("kmsfan",key); if (!string.IsNullOrEmpty(s))
{
token token1 = new token();
token1.uptoken = s;
s = JsonConvert.SerializeObject(token1);
//HttpContext.Response.ContentType = "text/plain";
return Content(s);
//return Json(new { uptoken = s});
}
return Json(new { IsSuccess = false });
}
网上还没找到类似的解法,我这人不太善于表达,如果有需要的话,不懂的,请在底下留言。