springMVC3 ckeditor3.6 图片上传 JS回调
一、引入js文件
<script type="text/javascript" src="<%=base %>/resources/ckeditor/ckeditor.js"></script>
<script type="text/javascript" src="<%=base %>/resources/ckeditor/adapters/jquery.js"></script>
二、增加图片上传功能 uploadUrl为上传图片的servlet,或controller。 #editor1为textarea的id
<script type="text/javascript">
$(function(){
var config = {
filebrowserImageUploadUrl : '${uploadUrl}'
};
$('#editor1').ckeditor(config);
});
</script>
三、编写上传类,返回回调函数
/**图片上传
* @author Administrator
*
*/
@Controller
@RequestMapping("/upload.do")
public class FileUploadController {
@RequestMapping(method=RequestMethod.GET)
public String upload2(){
return "upload";
} @RequestMapping(method=RequestMethod.POST)
public void upload(MultipartFile upload,Integer CKEditorFuncNum,HttpServletRequest request,HttpServletResponse resp){
System.out.println("contentType="+upload.getContentType());
System.out.println("originalFilename="+upload.getOriginalFilename());
System.out.println("CKEditorFuncNum="+CKEditorFuncNum); if(!upload.isEmpty()&&upload.getContentType().startsWith("image/")){
File picFolder = createFolder(request);
String extName = "."+FileNameUtil.getExtensionName(upload.getOriginalFilename());
String picAbsPath = picFolder.getAbsoluteFile()+File.separator+RandomUtil.rndChars(6)+extName;
File picFile = new File(picAbsPath);
String picRelativePath=request.getContextPath()+"/upload/"+picFolder.getName()+"/"+picFile.getName() ;//服务器相对路径
System.out.println("picRelativePath="+picRelativePath);
try {
//保存图片
FileUtils.copyInputStreamToFile(upload.getInputStream(), picFile);
//返回数据
resp.setHeader("Content-type", "text/html;charset=UTF-8");
resp.setCharacterEncoding("UTF-8"); StringBuffer sb = new StringBuffer();
sb.append("<script type=\"text/javascript\">");
sb.append("window.parent.CKEDITOR.tools.callFunction("+CKEditorFuncNum+",'"+picRelativePath+"' , '上传成功!');");
sb.append("</script>");
resp.getWriter().write(sb.toString());
} catch (IOException e) {
e.printStackTrace();
}
}else{
System.out.println("没有选择图片文件");
}
} private File createFolder(HttpServletRequest request) {
//创建根文件夹
//File uploadFolderRoot = new File("D:/upload_file");
String uploadFolderRoot = request.getServletContext().getRealPath("/upload");
//创建日期文件夹
SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd");
String dateFolder = date.format(new Date()); File uploadFile = new File(uploadFolderRoot, dateFolder);
if(!uploadFile.exists())uploadFile.mkdirs();
return uploadFile;
}
最主要的是这句
StringBuffer sb = new StringBuffer();
sb.append("<script type=\"text/javascript\">");
sb.append("window.parent.CKEDITOR.tools.callFunction("+CKEditorFuncNum+",'"+picRelativePath+"' , '上传成功!');");
sb.append("</script>"); 即回调的JS代码
CKEditorFuncNum是隐藏的表单项,传给了上传的servlet,而不是网上的0啊,1啊。。。
window.parent.CKEDITOR.tools.callFunction(a,b,c) 三个参数
a是CKEditorFuncNum
b是图片的访问url
c是提示消息 ------------------------------获取ckeditor里的数据
function checkForm(){
var con = CKEDITOR.instances.editor1.getData();
if($.trim(con)==""){
alert("请输入内容");
return false;
}
$("input[name=ckcontent]").val(con);
return true;
}
editor1为你所指定的textarea的id
<form action="${submitArticleUrl}" method="post" onsubmit="return checkForm()">
<textarea id="editor1" name="editor1"></textarea>
<p/>
<input type="hidden" name="ckcontent"/>
<input type="submit" value="添加"/>
</form>
在提交表单时处理,将editor的数据赋值给隐藏表单项即可
springMVC3 ckeditor3.6 图片上传 JS回调的更多相关文章
- 百度编辑器前后端二开图片上传Js Thinkphp tp5 ueditor
百度编辑器图片上传Jsueditor.all.min.js 下载链接 链接:https://pan.baidu.com/s/1VNgw9ELgRRHKeCQheFkQTw 提取码:fnfi 使用方法: ...
- 图片上传JS插件梳理与学习
项目的oper端和seller端,用了两个不同插件,简单了解一下: 一.seller端:AjaxUpload.js seller端使用的是 AjaxUpload.js ,封装好的一个库.调用时传入参数 ...
- 头像截取 图片上传 js插件
先看一下整体效果 页面html <div class="row"> <div class="tabs-container"> <u ...
- 图片上传js
var imgURL; function getImgURL(node) { try{ var file = null; if(node.files && node.files[0] ...
- js 利用iframe和location.hash跨域解决的方法,java图片上传回调JS函数跨域
奶奶的:折腾了我二天,最终攻克了!网上有非常多样例. 但跟我的都不太一样,费话不多说了,上图 上代码: IE ,firefix,chrome 測试通过 js :这个主页面,部分代码, functi ...
- 图片上传,支持同步/异步、预览(MVC、uploadify异步提交、js预览、ajaxSubmit异步提交)兼容大部分浏览器,含代码
图片上传代码,支持同步/异步和图片的预览 主要用了两种方式,可兼容大部分浏览器. 第一种使用uploadify异步上传,上传后返回图片路径显示到页面. 每二种使用ajaxSubmit异步上传,为兼容I ...
- 原生JS实现异步图片上传(预览)
效果 实现过程分为两步 1. 用户点击添加后通过 H5文件读取 FileReader对象以DataURL的格式读取图片 2. 通过FormData对象生成表单数据,通过ajax上传到后台 HTML & ...
- html + js 实现图片上传,压缩,预览及图片压缩后得到Blob对象继续上传问题
先上效果 上传图片后(设置了最多上传3张图片,三张后上传按钮消失) 点击图片放大,可以使用删除和旋转按钮 (旋转功能主要是因为ios手机拍照后上传会有写图片被自动旋转,通过旋转功能可以调正) html ...
- 图片上传前 压缩,base64图片压缩 Exif.js处理ios拍照倒置等问题
曾写过在前端把图片按比例压缩不失真上传服务器的前端和后台,可惜没有及时做总结保留代码,只记得js利用了base64位压缩和Exif.js进行图片处理,还有其中让我头疼的ios拍照上传后会倒置等诸多问题 ...
随机推荐
- fetch用法
fetch(REQUEST_URL) .then((response) => response.json()) .then((responseData)=> { console.log(r ...
- mysql ALTER COLUMN MODIFY COLUMN CHANGE COLUMN 区别及用法 (转)
-- 设置或删除列的默认值.该操作会直接修改.frm文件而不涉及表数据.此操作很快 -- ALTER COLUMN ALTER TABLE dsp_ad_center.XianDuan ALTER ...
- python数据分析之pandas库的Series应用
一.pandas的数据结构介绍 1. Series 1.1 Series是由一种类似于一维数组的对象,它由一组数据以及一组与之相关的数据索引构成.仅由一组数据可产生最简单的Series. from p ...
- Genymotion出现Unable to load VirtualBox engine问题--100%解决
首先强调一个事情,作为程序员,一定要养成一个习惯:安装软件时尤其像VirtualBox这类,首先设置其"兼容模式"以及"特权等级" . 环境:win7 64bi ...
- bzoj4165: 矩阵
Description 定义和谐矩阵为长不小于 Mina 且宽不小于 Minb 的矩阵,矩阵的权值为整个矩阵内所有数的和.给定一个长为 N ,宽为 M 的矩阵 A,求它的所有和谐子矩阵中权值第 K 小 ...
- oracle imp导入数据到另一个表空间
http://blog.163.com/darlingchenlin@126/blog/static/7156283420100531431855/ 1.在第一个数据库导出数据:qlyg_xs_db_ ...
- sealed修饰符
sealed(C# 参考) 当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承. 在下面的示例中,类 B 从类 A 继承,但是任何类都不能从类 B 继承. class A {} s ...
- PLSQL_性能优化系列05_Oracle Hint提示
2014-06-20 Created By BaoXinjian
- Linux Deepin 2014安装Lenovo LJ2600D驱动
双11老师给实验室抢了个Lenovo LJ2600D的USB接口打印机,并用旧的HP-1080MFP网络打印服务器连接上了.Windows下就不多说了,官方给的驱动就是针对它的,同学们都用得爽爆了,因 ...
- nginx优化配置
一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu ...