扩展FCKEditor上传功能(图片服务器)

最近因为项目中的需要,需要将管理后台Fckeditor上传的图片上传到统一的图片服务器(apache实现)中,取代现有上传保存到自身项目环境下~~ 调试代码过程将代码锁定到以下两个方法: (1)、net.fckeditor.connector.ConnectorServlet#doPost() (2)、net.fckeditor.tool.UtilsResponse#constructResponseUrl() 具体参数意义建议DEBUG设置断点的情况下,调研一下~~会发现一目了然改动第一步,设置远程上传,这个其实不是难点,ConnectorServlet#doPost() 最后部分添加将pathToSave该文件SFTP给图片服务器的功能。 (SFTP代码下次有时间的时候贴出~~) 使用过fckeditor的同仁应该都会注意到上传之后,input框中地址,也就是这个相对路径会被保存到数据库或者代码中~~,因此我们改动的下一步就是让上传图片之后,input框中地址显示的是绝对路径,也就是图片服务器地址 DEBUG模式下可以发现实现上传之后,会触发一个JS操作,切换DIV,以及相应的onComplete事件(单纯从页面和JS中很难找到,因为是通过IO流实现的,DEBUG下可以从IO流中发现) 这个RESPONSE是通过UtilsResponse的constructResponseUrl构建的,因此改动点出现了,在fckeditor.properties中添加一个属性,java代码去获取这个属性,如果配置了远程服务器,那直接返回图片服务器的地址,反之,继续原先的操作,返回相对项目图片保存路径

static String remoteFilePath = null;
	static final String configureFile = "fckeditor.properties";
	static {
		Properties properties = PropertiesUtil.getProperties(configureFile);
		remoteFilePath = properties.getProperty("connector.remoteFilePath");
	}
	
	  public static String constructResponseUrl(HttpServletRequest request, ResourceTypeHandler resourceType, String urlPath, boolean prependContextPath, boolean fullUrl)
	  {
		  if (remoteFilePath == null || remoteFilePath.trim().length() == 0) {
			  StringBuffer sb = new StringBuffer();

			    if (fullUrl) {
			      String address = request.getRequestURL().toString();
			      sb.append(address.substring(0, address.indexOf(47, 8)) + request.getContextPath());
			    }

			    if ((prependContextPath) && (!(fullUrl)))
			      sb.append(request.getContextPath());

			    sb.append(ConnectorHandler.getUserFilesPath(request));
			    sb.append(resourceType.getPath());

			    if (Utils.isNotEmpty(urlPath))
			      sb.append(urlPath);

			    return sb.toString();
		  }
		  return remoteFilePath;
	  }

 

 

#fckeditor.properties connector.remoteFilePath=http://images.XXXX.com/images/

将修改后的代码重新打包一下,重新调试一下,OK,搞定收工~~~

你可能感兴趣的:(apache,.net,fckeditor,项目管理,配置管理)