最近做新闻系统,用了kindeditor,其中上传图片的功能没有Java版的,自己修改了下并实现它,记录下来,备忘。
我一般不是很赞同修改别人的源代码,尤其是这种开源的,否则移植性很差火,所以尽量修改最少。
1、修改../plugins/image.html文件
把form提交的地址改成action的地址。其余的不变
2、实现action,获得上传文件,并保存文件到相应目录,然后返回时注意是HTML代码,要调用kindeditor中的插入图片和关闭层的函数,其实就是一个函数,action代码如下:
Code
1/*
2*上传图片
3*/
4@SuppressWarnings("deprecation")
5publicStringinputimage()throwsException{
6Stringimagename=getImgFileFileName();
7imagename=FormatConstants.DATE_TIME_FORMAT_IMAGE.format(DateUtils
8.getCurrentDateTime())
9+imagename.substring(imagename.lastIndexOf("."),imagename
10.length());
11try{
12StringnewPath=getRequest().getRealPath("")
13+"\\upload\\articleimage\\"+imagename;
14copy(imgFile,newPath);
15addActionMessage("保存成功!");
16}catch(Exceptione){
17logger.error(e.getMessage(),e);
18addActionError("保存失败!");
19return"imageinput";
20}
21Stringid="content1";
22Stringurl="http://"+getRequest().getServerName()+":"+getRequest().getServerPort()+"/upload/articleimage/"
23+imagename;
24Stringtitle="100";
25Stringwidth="100";
26Stringheight="100";
27Stringborder="0";
28returnrenderHtml(("<scripttype=\"text/javascript\">parent.KE.plugin[\"image\"].insert(\""
29+id
30+"\",\""
31+url
32+"\",\""
33+title
34+"\",\""
35+width
36+"\",\""+height+"\",\""+border+"\");</script>"));
37}
38
39/**
40*拷贝文件
41*
42*@paramupload文件流
43*@paramnewPath新文件路径和名称
44*@throwsException
45*/
46privatevoidcopy(Fileupload,StringnewPath)throwsException{
47FileOutputStreamfos=newFileOutputStream(newPath);
48FileInputStreamfis=newFileInputStream(upload);
49byte[]buffer=newbyte[1024];
50intlen=0;
51while((len=fis.read(buffer))>0){
52fos.write(buffer,0,len);
53}
54fos.close();
55fis.close();
56} 以上代码是ss3ex中的写法。其中图片宽,高度等我懒得获取值,简单的附了初始值。
备注:关于文章系统的设计思路,开始一直在琢磨图片和文章的关联,最后决定放弃一切关系,图片的路径就放在文章的内容里,基本与文章没得关系。优点是,少个个图片表的维护,缺点是,图片只能增不能删,删除图片时只能手工删除了,好歹我把图片的名字设置成日期格式了。
如果真的要实现删除图片的话,也好办,找到文章的创建日期,根据日期来删除图片,目前只想到整天整天的删。