KindEditor的上传图片CGI(JSP版)

  见过、用过很多网页在线编辑器,如:fckEditor、eWebEditor、htmlarea等,也简单看过、修改过其中的代码。但我觉得KindEditor的框架结构最为小巧、合理、精致。程序代码比较优美、易懂。

  功能上,有个我也比欣赏的,就可提供了方便的上传本地图片的扩展编程接口,自带了asp、php的上传CGI程序。我做的项目里一般用java用的比较多一点。可官方没有提供,就自已写了一个。相信有跟我一样需求的朋友,把程序贴在下面,大家拿去用好了。

  我还添加了一个上传附件的功能,跟上传本地图片编程方法基本一致,就不过多介绍了。

/****************************upload.jsp代码**********************************/
 <% @page   import = "java.net.URLDecoder" %>
 <%@ page language= "java"  contentType= "text/html;charset=GB18030" %>
 <%@ page  import = "java.util.*" %>
 <%@ page  import = "org.apache.commons.fileupload.*" %>
 <%
 //程序:wallimn
 //时间:2008-08-27
 //电邮:[email protected]
 //博客:http://wallimn.iteye.com、http://blog.csdn.net/wallimn
 //说明:KindEditor图片上传处理CGI,
 //注意:此程序需要commons-fileupload.jar,请自行下载放到WEB-INF/lib目录下。
 //request.setCharacterEncoding("GB18030");
 String contextPath = request.getContextPath()+ "\\" ;
 String SavePath = request.getSession().getServletContext().getRealPath( "\\")+" attached/";
 String SaveUrl = contextPath+ "/attached/" ;
 String[] ExtArr =  new  String[]{ ".gif" , ".jpg" , ".png" , ".bmp" };
 int  MaxSize =  4000000 ;
 String Msg1 =  "上传文件大小超过限制。" ;
 String Msg2 =  "上传文件的扩展名不被允许。" ; 
 String Msg3 =  "文件上传失败。" ;
 String Msg=Msg3;
 //java.io.File files=new java.io.File(".");    
 //String FileName = (String)request.getAttribute("fileName");
 String FileWidth =  null ;
 String FileHeight =  null ;
 String FileBorder =  null ;
 String FileTitle =  null ;
 String FileTitle2 =  null ;
 String FileAlign =  null ;
 String FileHspace =  null ;
 String FileVspace =  null ;

 Date dt =  new  Date();
 Random random =  new  Random();
 random.nextInt();
 String FileNameAuto = String.format( "%X_%X" , new  Object[]{ new  Integer(( int )(dt.getTime())), new  Integer(random.nextInt())});
 String FilePath =  null ;
 String FileUrl =  null ;
 DiskFileUpload fu =  new  DiskFileUpload();
 fu.setSizeMax(MaxSize); //
 fu.setSizeThreshold( 4096 );
 fu.setRepositoryPath( "c:/" );
 //ServletRequestContext src = new ServletRequestContext(request);   
 List fileItems = fu.parseRequest(request);
 Iterator iter = fileItems.iterator();
 while  (iter.hasNext()) {
     FileItem item = (FileItem) iter.next();
     String fieldName = item.getFieldName();
      if  (!item.isFormField()) {
         String name = item.getName();
          long  size = item.getSize();
          if ((name== null ||name.equals( "" )) && size== 0 )
          continue ;
          if (size>MaxSize) {
             Msg=Msg1;
              break ;
         }
          //name = name.replace(':','_');
          //name = name.replace('\\','_');
          int  pos = name.lastIndexOf( "." );
         String ext = name.substring(pos);
          boolean  b= false ;
          for ( int  m= 0 ;m<ExtArr.length; m++){
              if (ExtArr[m].equalsIgnoreCase(ext)){
                 b= true ;
                  break ;
             }
         }
          if  (b== false ){
             Msg=Msg2;
              break ;
         }
         FilePath = SavePath + FileNameAuto+ext;
         FileUrl = SaveUrl + FileNameAuto+ext;
         java.io.File f=  new  java.io.File(FilePath);
         item.write(f);
     }
      else {
         String fieldValue = item.getString();
          if ( "imgWidth" .equals(fieldName)){
             FileWidth = fieldValue;
         }
          else   if ( "imgHeight" .equals(fieldName)){
             FileHeight = fieldValue;
         }
          else   if ( "imgBorder" .equals(fieldName)){
             FileBorder = fieldValue;
         }
          else   if ( "imgTitle" .equals(fieldName)){
             FileTitle = fieldValue;
         }
          else   if ( "imgTitle2" .equals(fieldName)){
              //FileTitle2 = URLDecoder.decode(fieldValue,"GB18030");
             FileTitle2 = URLDecoder.decode(fieldValue, "UTF-8" );
         }
          else   if ( "imgAlign" .equals(fieldName)){
             FileAlign = fieldValue;
         }
          else   if ( "imgHspace" .equals(fieldName)){
             FileHspace = fieldValue;
         }
          else   if ( "imgVspace" .equals(fieldName)){
             FileVspace = fieldValue;
         }
     }
 }
 if (FileUrl!= null ){
     out.println(  "<html>" );
     out.println(  "<head>" );
     out.println(  "<title>error</title>" );
     out.println(  "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">" );
     out.println(  "</head>" );
     out.println(  "<body>" );
     out.println(  "<script type=\"text/javascript\">parent.KindInsertImage(\""  + FileUrl +  "\",\""  + FileWidth +  "\",\""  + FileHeight +  "\",\""  + FileBorder +  "\",\""  + FileTitle2 +  "\",\""  + FileAlign +  "\",\""  + FileHspace +  "\",\""  + FileVspace +  "\");</script>" );
     out.println(  "</body>" );
     out.println(  "</html>" );
 }
 else {
     out.println(  "<html>" );
     out.println(  "<head>" );
     out.println(  "<title>error</title>" );
     out.println(  "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">" );
     out.println(  "</head>" );
     out.println(  "<body>" );
     out.println(  "<script type=\"text/javascript\">alert(\""  + Msg +  "\");parent.KindDisableMenu();parent.KindReloadIframe();</script>" );
     out.println(  "</body>" );
     out.println(  "</html>" );
 }
 %>

注:此代码在2.4KindEditor版本中测试通过。目前的最新版本为:3.1.1,其js代码变化比较大,不知还能不能用,我没有进行测试。2009-04-10

请注意:common-fileupload的版本为1.0,选用更高版本的jar,可能代码会有些变化。

/***********本人原创,欢迎转载,转载请保留本人信息*************/
作者:wallimn 电邮:[email protected] 时间:2008-08-30
博客: http://blog.csdn.net/wallimn  http://wallimn.iteye.com
网络硬盘:http://wallimn.ys168.com
/***********文章发表请与本人联系,作者保留所有权利*************/
 

你可能感兴趣的:(编程,jsp,fckeditor,cgi,asp.net)