本文主要目的是用kindeditor 实现图片上传功能。
第一步:在view中加载kindeditor ,指定kindeditor的配置:
<script type="text/javascript">
KE.show({
id : 'content1',
//重点是下面这句
imageUploadJson : '@{Journals.uploadjson()}',
fileManagerJson : '../../jsp/file_manager_json.jsp',
allowFileManager : true,
afterCreate : function(id) {
KE.event.ctrl(document, 13, function() {
KE.util.setData(id);
document.forms['form'].submit();
});
KE.event.ctrl(KE.g[id].iframeDoc, 13, function() {
KE.util.setData(id);
document.forms['form'].submit();
});
}
});
</script>
第二步:编写Controller:uploadjson方法:
public static void uploadjson(File imgFile) {
//文件保存目录路径
String savePath = Play.applicationPath.toString()+Play.configuration.getProperty("newsImg.savePath", "false");
//文件保存目录URL
String saveUrl = Play.configuration.getProperty("newsImg.savePath", "false");
//System.out.println("Play.configuration.getProperty(newsImg.fileTypes):"+Play.configuration.getProperty("newsImg.fileTypes", "false"));
//定义允许上传的文件扩展名
String[] fileTypes = (Play.configuration.getProperty("newsImg.fileTypes", "false")).trim().toString().split(",");
//最大文件大小
long maxSize = 1000000;
if (imgFile != null) {
//检查目录
File uploadDir = new File(savePath);
if(!uploadDir.isDirectory()){
renderJSON(getError("上传目录不存在。"));
return;
}
//检查目录写权限
if(!uploadDir.canWrite()){
renderJSON(getError("上传目录没有写权限。"));
return;
}
//创建文件夹
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String ymd = sdf.format(new Date());
savePath += ymd + "/";
saveUrl += ymd + "/";
File dirFile = new File(savePath);
if (!dirFile.exists()) {
dirFile.mkdirs();
}
//检查文件大小
if(imgFile.length() > maxSize){
renderJSON(getError("上传文件大小超过限制。"));
return;
}
//检查扩展名
String fileExt = imgFile.getName().substring(imgFile.getName().lastIndexOf(".") + 1).toLowerCase();
// System.out.println("fileExt:"+fileExt);
if(!Arrays.<String>asList(fileTypes).contains(fileExt)){
renderJSON(getError("上传文件扩展名是不允许的扩展名。"));
return;
}
// String ext = imgFile.getName().substring(
// imgFile.getName().lastIndexOf("."));
// String fileName = RandomStringUtils.random(8, true, true) + ext;
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;
File f = new File(savePath,newFileName);
//System.out.println("f.getPath()----:" + f.getPath());
try {
// System.out
// .println("imgFile.renameTo(f):" + imgFile.renameTo(f));
JSONObject obj = new JSONObject();
obj.put("error", 0);
obj.put("url", saveUrl + newFileName);
renderText(obj.toJSONString().toString());
return;
} catch (Exception e) {
e.printStackTrace();
renderJSON(getError("上传失败"));
return;
}
}else{
renderJSON(getError("请选择文件。"));
return;
}
}
第三步:测试吧。就这些了,不用详细介绍了。