css:
<link rel="stylesheet" href="/asset/other/kindeditor/themes/default/default.css" />
<script charset="utf-8" src="/asset/other/kindeditor/kindeditor-all-min.js"></script>
<script charset="utf-8" src="/asset/other/kindeditor/lang/zh-CN.js"></script>
js
<script>
var editor;
KindEditor.ready(function(K) {
editor = K.create('textarea[name="kindarea"]', {
allowFileManager : true
});
});
</script>
html
注意此处name和上方js的配置名称相同
<textarea name="kindarea" style="width:800px;height:400px;visibility:hidden;">KindEditor</textarea>
本来以为到此收工,谁知道里面上传图片的功能怎么都不行。。。。
于是找了好久终于发现了/kindeditor/php/upload_json.php文件需要改(我使用的是thinkphp5):
$php_url = '/';
//文件保存目录路径
$save_path = '../../../../uploads/';
//文件保存目录URL
$save_url = $php_url.'uploads/';
这里解释一下,实际上,我在public目录下创建了uploads目录,在tp5下,默认public目录即为根目录;
当前upload_json.php文件目录为/public/assets/kindeditor/php/upload_json.php,所以相对路径public层是upload_json.php的上4层,保存的网页路径为/uploads/
文件实际保存路径 | 当前路径 | 相对路径 |
---|---|---|
/public/uploads | /public/assets/kindeditor/php/upload_json.php | ../../../../uploads/ |
然后讲下plupload:
同样要先下载
配置js:
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<script type="text/javascript" src="/asset/other/plupload/plupload.full.min.js"></script>
逻辑js:
<script type="text/javascript">
var uploader = new plupload.Uploader({ //创建实例的构造方法
runtimes: 'html5,flash,silverlight,html4', //上传插件初始化选用那种方式的优先级顺序
browse_button: 'upload_btn', // 上传按钮,注意和自己的id设为相同
url: "xxx", //远程上传地址(要php,需进行处理)
flash_swf_url: 'plupload/Moxie.swf', //flash文件地址,这个不用管
silverlight_xap_url: 'plupload/Moxie.xap', //silverlight文件地址,这个不用管
filters: {
max_file_size: '10mb', //最大上传文件大小(格式100b, 10kb, 10mb, 1gb)
mime_types: [ //允许文件上传类型
{
title: "files",
extensions: "jpg,png,gif,ico"
}
]
},
multi_selection: true, //true:ctrl多文件上传, false 单文件上传
init: {
FilesAdded: function(up, files) { //文件上传前
var reader = new FileReader();
reader.readAsDataURL(files[0].getNative());
reader.onload = (function (e) {
var image = new Image();
image.src = e.target.result;
image.onload = function () {
//限制图片宽小于800,高小于1000
if (this.width <=800 && this.height < 1000) {
var li = '';
plupload.each(files, function(file) { //遍历文件
li += "<li id='" + file['id'] + "'><div class='progress'><span class='bar'></span><span class='percent'>0%</span></div></li>";
});
$("#ul_pics").append(li);
uploader.start();
} else {
alert("您选择的图片尺寸过大!请裁剪后再上传。");
}
};
});
},
FilesRemoved:function(up,files){
plupload.each(files, function(file) { //遍历文件
$('#'+file.id).remove();
deleteFile(src);
});
},
UploadProgress: function(up, file) { //上传中,显示进度条
var percent = file.percent;
$("#progress").html(percent);
$("#" + file.id).find('.bar').css({
"width": percent + "%"
});
$("#" + file.id).find(".percent").text(percent + "%");
},
FileUploaded: function(up, file, info) { //文件上传成功的时候触发
var data = eval("(" + info.response + ")");
$("#" + file.id).attr("value",data.path);
$("#" + file.id).html("<div class='img'><img align='middle' src='" + data.pic + "' /><img onclick='remove(this)' src='/asset/img/close.png' style='position: relative;width:30px;height: 30px;top: -50px;left: -20px;'/></div>");
},
Error: function(up, err) { //上传出错的时候触发
alert(err.message);
}
}
});
uploader.init();
var src = null;
function remove(obj){
var id = $(obj).parent().parent().attr("id");
src = $(obj).parent().parent().attr("value");
var ul_pics = document.getElementById("ul_pics");
var childs = ul_pics.childNodes;
for(var i = childs.length - 1; i >= 0; i--) {
if(childs[i].getAttribute("id")==id){
uploader.splice(i,1);
break;
}
}
}
function deleteFile(name)
{
$.ajax({
type: 'POST',
data: {name: name},
url: 'xx',//删除处理路径
success: function (data) {
var obj = eval('(' + data + ')');
alert(obj.msg);
}
});
}
</script>
上传处理:
$typeArr = array("jpg", "png", "gif","ico");
//注意此路径为上传路径
$path = "uploads/";
//上传路径
if (isset($_POST)) {
$name = $_FILES['file']['name'];
$size = $_FILES['file']['size'];
$name_tmp = $_FILES['file']['tmp_name'];
if (empty($name)) {
echo json_encode(array("error" => "您还未选择图片"));
exit ;
}
$type = strtolower(substr(strrchr($name, '.'), 1));
//获取文件类型
if (!in_array($type, $typeArr)) {
echo json_encode(array("error" => "清上传jpg,png或gif类型的图片!"));
exit ;
}
$pic_name = time() . rand(10000, 99999) . "." . $type;
//图片名称
$pic_url = $path . $pic_name;
//上传后图片路径+名称
if (move_uploaded_file($name_tmp, $pic_url)) {//临时文件转移到目标文件夹
echo json_encode(array("error" => "0", "pic" => $this->request->root(true).'/'.$path.'/'.$pic_name, "name" => $pic_name,"path"=>$path.'/'.$pic_name));
} else {
echo json_encode(array("error" => "上传有误,清检查服务器配置!"));
}
}
删除处理:
$filename = $_POST['name'];
unlink ( $filename);
return getResponse(1, "删除成功!");
function getResponse($code,$msg){
$response['code']=$code;
$response['msg']=$msg;
return json_encode($response);
}
html:
<button id="upload_btn">上传</button>
<ul id="ul_pics" class="ul_pics clearfix"></ul>
css:
.ul_pics{
list-style: none;
white-space:nowrap;
display: block;
padding:0;
margin-top: 10px;
margin-bottom: 10px;
}
.ul_pics li {
float: left;
width: 100px;
height: 100px;
border: 1px solid #ddd;
background: white;
text-align: center;
margin: 5px;
}
.ul_pics li .img {
width: 100px;
height: 100px;
display: table-cell;
vertical-align: middle;
}
.ul_pics li img {
max-width: 100px;
max-height: 100px;
padding:5px;
vertical-align: middle;
}
.progress {
position: relative;
padding: 1px;
border-radius: 3px;
margin: 60px 0 0 0;
}
.bar {
background-color: green;
display: block;
width: 0%;
height: 20px;
border-radius: 3px;
}
.percent {
position: absolute;
height: 20px;
display: inline-block;
top: 3px;
left: 2%;
color: #fff
}
.clearfix:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0
}
这个也要注意:
1.$path = “uploads/”;这个要改为合适的路径
2.此处是browse_button: 'upload_btn'
注意和自己的控件id设为相同
3.删除的时候,注意一定要取value的值,不能直接用files里面file的属性,里面的所有参数都不是真实的路径
4.删除的时候不要用uploader.removeFile(filename);会失败且不会回调FilesRemoved。