问题描述:可以上传 ,没有任何异常,但是上传的文件打不开。上传的文件为*.tar.gz 本地可以打开。(其实FTP服务也是本地的)。
文件名:FtpClientUtil.javaFTPClient client;
MyLogger log = MyLogger.getLogger(FTPClinteUtil.class);
public void login(int mode,String url,int port,String username, String password){
  client = new FTPClient();
try {
int reply;
client.connect(url, port);//连接FTP服务器
//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
client.login(username, password);//登录
reply = client.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
client.disconnect();
}
// client.setFileTransferMode(mode);
log.info2User("0011",url);
}catch (Exception e) {

if (client.isConnected()) {
try {
client.disconnect();
} catch (IOException ioe) {
}
}
log.info2User("0012",url);
throw new RuntimeException(e);
}
  }
  /**
 * Description: 向FTP服务器上传文件
 * @param path FTP服务器保存目录
 * @param filename 上传到FTP服务器上的文件名
 * @param input 输入流
 * @return 成功返回true,否则返回false
 */
  public boolean uploadFile( String path, String filename, InputStream input) {
  boolean success = false;
  try {
  client.changeWorkingDirectory(path);
  client.storeFile(filename, input);
  
  input.close();
  success = true;
  } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
  }
  return success;
  }
  
  public void logout(){
try {
client.logout();
} catch (IOException e) {
e.printStackTrace();
}finally{
if (client.isConnected()) {
try {
client.disconnect();
} catch (IOException ioe) {
}
}
}
  }
具体应用的伪代码:ftpClinteUtil.login(Integer.parseInt(mode), ip, i_port, user, pass);
//List<File>
for(int fi = 0;fi<list.size();fi++){
boolean b = ftpClinteUtil.uploadFile(dir, list.get(fi).getName(), new FileInputStream(list.get(fi)));
if(b){
log.info2User("送信成功");
}else{
ftpsendSuccess = false;
log.info2User("送信異常,this is last retry!");
}

}
ftpClinteUtil.logout();
问题描述:可以上传 ,没有任何异常,但是上传的文件打不开。上传的文件为*.tar.gz 本地可以打开。(其实FTP服务也是本地的)。

解决方案 »

  1.   

    问题描述:可以上传 ,没有任何异常,但是上传的文件打不开。上传的文件为*.tar.gz, 本地的tar.gz可以打开。(其实FTP服务也是本地的)。
      

  2.   

    上传的文件为*.tar.gz请问你是采用何种方式打开打??? 什么叫打不开?linux下解包的命令?
      

  3.   

    怎么说呢,压根就是在WINDOWS上的,FTP也是在自己机器上的,然后做成的与源文件(。tar.gz)用任意解压工具(如:7zip)都能正常打开,通过以上类用FTP上传后(其实就是本地另一个文件夹,模拟FTP上传),再解压告知压缩包损坏。
      

  4.   

    不是可以自动上传么www.163xyx.com温馨提醒你 
      

  5.   

    你应该在上传之前调用binary()方法,否则上传的文件可能会有错误
      

  6.   

    client.changeWorkingDirectory("mulu1");
    File uploadFile = new File("c:/OriRevision.doc");
    inPut =  new FileInputStream(uploadFile);
    // Notice the follow row,Sets the file type to be transferred.
    client.setFileType(FTP.BINARY_FILE_TYPE);
    client.storeFile(uploadFile.getName(),inPut);
      

  7.   

    在你上传文件流之前,试试这样设置看看。
                // 设置文件类型
                ftpclient.setFileType(BINARY_FILE_TYPE);
                ftpclient.enterLocalPassiveMode();
                // 文件传输模式:FTP文件流传输
                ftpclient.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);
          
                InputStream input = new FileInputStream(file);
      

  8.   


    错误就在没有setFileType啊。
    thanks!