有没有什么比较好的解决方法?谢谢了:)

解决方案 »

  1.   

    用其中的一个server来响应文件的上传,然后在这个server里面写一个dispatcher,再把这个文件上传到其他的server里面。
      

  2.   

    我的解决方法是这样的,供各位有需要的参考,也请高手批评指正,共同进步:
    在jsp页面中采用smartUpload进行上传,本来我是指望smartUpload一次上传到多台服务器的,可是几台服务器都是linux环境,用smartUpload可以上传到本地机器,可是我不知道怎么用smartUpload上传到网络中另外一台linux,于是想到了采用FTP上传,先由smartUpload上传到本地服务器,紧接着,再FTP上传到别的服务器:<%@ page language="java" import="com.jspsmart.upload.*" import="java.text.*,java.util.*,java.io.*,org.apache.commons.net.ftp.*"%>
    <jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload"/>
    <%@ page contentType="text/html;charset=gb2312"%>
    <%//@ page language="java" import="com.jspsmart.upload.*"%> <%
    request.setCharacterEncoding("GB2312");
    //定义目标目录
    //定义目标目录
    String context = "/pic/";//本地服务器的存放地址
    //String context = picConfigBean.getNewsPicPath();
    //String destination="images\\";
    mySmartUpload.initialize(pageContext);
    //文件上传
    mySmartUpload.upload();
    String image_hx = "";
    com.jspsmart.upload.File myFile_hx = mySmartUpload.getFiles().getFile(0);
    if(!myFile_hx.isMissing()){
      image_hx = myFile_hx.getFileName();
      String prefix_hx = image_hx.substring(image_hx.lastIndexOf(".") + 1, image_hx.length());
      if(prefix_hx.equals("jpg")||prefix_hx.equals("jpeg")||prefix_hx.equals("JPG")||prefix_hx.equals("JPEG")||prefix_hx.equals("bmp")||prefix_hx.equals("BMP")||prefix_hx.equals("png")||prefix_hx.equals("PNG")||prefix_hx.equals("GIF")||prefix_hx.equals("gif"))
      {
        java.io.File fl = new java.io.File(context + image_hx);
        if (fl.exists()) {
          /*Random random = new Random();
          String s1 = Integer.toString(random.nextInt(9)) + Integer.toString(random.nextInt(9)) + Integer.toString(random.nextInt(9)) + Integer.toString(random.nextInt(9));
          s1 += image_hx;
          image_hx = s1;*/
          myFile_hx.saveAs(context + image_hx);
        }
        myFile_hx.saveAs(context + image_hx);
      }
    }  //以下为FTP上传
      
     int i=0;
     int Size=0;
     String FileExt="",suffix="",name1="",newname="",Fnewname="";
     
     String ftpHostname="XXX.XX.X.XXX";   //ftp主机IP地址
     String ftpUser="userName";  //用户名
     String ftpPwd="psw";   //密码
     String ftpDir="/home/benz/";  //ftp目录
     
     FTPClient ftp=new FTPClient();
    try {
      ftp.connect(ftpHostname);
      ftp.login(ftpUser,ftpPwd);
      ftp.changeWorkingDirectory(ftpDir);  ftp.setFileType(ftp.BINARY_FILE_TYPE); //以BINARY格式传送文件  Fnewname=context+image_hx; //这里需要给出的是文件所在本地机器的根目录路径  FileInputStream f_in=new FileInputStream(Fnewname);
      ftp.storeFile(image_hx,f_in);   //存储文件到ftp的/file目录中。
      
      out.print("successful");
      
      f_in.close();
      ftp.logout(); } catch(Exception e) {
      e.printStackTrace();
     }
    %>
    需要用到commons-net的jar包,在apache的网站上就可以下载得到
    PS:
    我有2个地方需要用到上传,一个是在页面中用sartUpload上传,另外一个是在fckeditor中插入图片,flash时,同时要上传到别的服务器,这种情况下,我就修改了com.fredck.FCKeditor.uploader.SimpleUploaderServlet,这个在这里就不赘述了,一样的,将那段ftp的代码直接copy进去就好了