客户端IP  192.168.1.100       
WEB应用服务器IP(上传的文件: a.txt 在此服务器生成并保存):192.168.1.101    
文件存放服务器IP: 192.168.1.102(登陆用户名:admin 密码:admin  文件存放目录:C:/)现在我在客户端登陆“WEB应用服务器”的应用,触发事件,生成“上传的文件”的同时,将此文件(a.txt)上传到“文件存放服务器”,文件上传如何编码,各位朋友,能帮我封装一个方法吗?public void ftpUpload(String ipAddress,String userName,String passWord,String filePath,String uploadPath)
ipAddress:文件存放服务器IP地址     userName:文件存放服务器登陆用户名      passWord: 登陆密码        filePath:上传的文件路径     uploadPath:文件服务器存放文件夹    

解决方案 »

  1.   

    这是我的一段代码,不知道能否帮你,自己改改试试吧
    import org.apache.struts.upload.FormFile;
    import sun.net.ftp.FtpClient;public class FileUploadAction extends Action
    {
      public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res)
          throws Exception
      {
        FileUploadForm theForm = (FileUploadForm)form;
        String fileId = theForm.getFileId();
        FormFile file = theForm.getFile();
        InputStream is = null;
        OutputStream os = null;
        FtpClient ftpClient = null;
        String fileName = file.getFileName();
        try{        if(fileName.lastIndexOf(".")>0 && StringUtil.filterFileExt(StringUtil.getFileExt(fileName))){/**这个if条件你可以不用理*/
              is = file.getInputStream();
              String ftpType = Configer.getInstance("common").get("ftpType");
              if(ftpType.indexOf(fileId)>0){/**判断是否为ftp上传*/
                ftpClient = new FtpClient();
                ftpClient.openServer(Configer.getInstance("common").get("ftpAddr"),Configer.getInstance("common").getInt("ftpPort"));/**打开服务器**/
                ftpClient.login(Configer.getInstance("common").get("ftpWriteUser"),Configer.getInstance("common").get("ftpWritePassword"));/**登录到服务器*/
                ftpClient.cd(Configer.getInstance("filePath").get(fileId));/**获得要访问的ftp服务器上的目录,文件将存到该目录下去*/
            ftpClient.binary();
                os = ftpClient.put(fileName);
              }else{
               File dir = new File(Configer.virtualRoot + Configer.getInstance("filePath").get(fileId));
                  dir.mkdirs();
                  os = new FileOutputStream(Configer.virtualRoot + Configer.getInstance("filePath").get(fileId) + fileName);
              }
              int bytesRead = 0;
              byte[] buffer = new byte[8192];
              while((bytesRead = is.read(buffer, 0, 8192)) != -1)/**一次传多少字节*/
              {
                os.write(buffer, 0, bytesRead);  
              } 
            } 
            else
            {
              throw new FileUploadException("FileUploadAction@execute 文件上传失败,"+fileName+" 文件类型不属于指定类型!");
            }
        }
        catch(Exception e) {
          e.printStackTrace();
          throw new FileUploadException("FileUploadAction@execute 文件上传失败,请检查文件名是否为空,或者文件是否存在!");
        }
        finally{
          if(is != null){
            try{
              is.close();
            }catch(Exception e){
            }
          }
          if(os != null){
            try{
              os.close();
            }catch(Exception e){
            }
          }
          if(file != null){
            file.destroy();
          }
    希望对你有所帮助