我们在使用ckeditor和ckfinder 上传文件的时候所有用户都能看到, 有时候我们想让每一个用户都有自己的文件夹自己可以管理而不影响到其他用户上传的文件。 其实很简单我们只需要动态改变config.xml文件就可以。
下面贴上代码:
package com.cityline.util; import java.io.File; import java.io.FileWriter; import java.util.Iterator; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /*创建不同用户的文件夹*/ public class CKfinderUtil { public void getUserName(String path,String userName){ File inputXml=new File(path); SAXReader saxReader=new SAXReader(); try { Document document=saxReader.read(inputXml); Element root=document.getRootElement(); for(Iterator i=root.elementIterator();i.hasNext();){ Element element=(Element)i.next(); System.out.println(element.getName()+"--------"+element.getText()); /*if(element.getName().equals("baseDir")){ //这个可以省略不用写 element.setText("/project/userfiles/"+userName+"/"); //文件夹路径
}*/ if(element.getName().equals("baseURL")){ element.setText("/project/userfiles/"+userName+"/"); //文件夹路径 } System.out.println(element.getName()+"---11111---"+element.getText()); } XMLWriter writer=new XMLWriter(new FileWriter(new File(path))); writer.write(document); writer.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }
用户登录的时候可以调用这个方法修改config.xml配置文件的baseDir和baseURL的值,从而实现每个用户上传的东西都是分开保存的。
最后说下config.xml配置文件的获取,不同的项目有不同的结构所以获取也是有所不同。
String path=Thread.currentThread().getContextClassLoader().getResource("/").getPath(); path = path.substring(1, path.indexOf("classes"))+"config.xml"; //这个是我用的方法
还可以使用这个来获取
String xmlcfgfile=request.getServletContext().getRealPath("WEB-INF/cfg.xml")
好了就到这里了 ,又不懂的可以留言。或者有其他方法也是可以交流一下。