具体的看不出,应该是 ftpClient.storeFile(sfileName,input); 的问题吧。这个类里怎么操作FileInputStream写入文件的?

解决方案 »

  1.   

    这个方法是apache的FTPClient里面的API,功能就是上次文件,具体怎么实现的不大清楚
      

  2.   

    我最近用过的一个方法,你参考一下吧/**
     * 上传单个文件到FTP服务器
     * @param path 目录路径
     * @param filename 目标文件名
     * @param file 待上传的文件
     * @param clear 是否删除已上传文件
     */
    public static boolean ftpUpload(String path,String filename,File file, boolean clear){
    FTPClient ftpClient = null;
    FileInputStream fis = null;
            try {
    ftpClient = ftpConnect();
    if(ftpClient == null){
    log.info("连接FTP失败!");
    return false;
    }
    log.info("paht:" + path);
    for(String p : path.split("\\" + File.separator)){
    if(!ftpClient.changeWorkingDirectory(p)){
    if(!ftpClient.makeDirectory(p)){
    log.info("创建目录失败,没有权限!");
    return false;
    }
    ftpClient.changeWorkingDirectory(p);
    }
    }
    log.info("FTP连接成功");

    ftpClient.setBufferSize(1024); 
                ftpClient.setControlEncoding("GBK"); 
                ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); 
                
                fis = new FileInputStream(file);
                if(ftpClient.storeFile(filename, fis)){
             log.info("上传到FTP成功," + filename);
             }else{
             log.info("上传到FTP失败," + filename);
             return false;
             }
                return true;
    } catch (Exception e) {
    log.error("上传到FTP异常:", e);
    return false;
    }finally{
    try {
    if(ftpClient != null){
    ftpClient.disconnect();
    }
    if(fis != null){
    fis.close();
    }
    if(clear && file.exists()){
    file.delete();
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }