2014-02-19 3 views
1

Я использую АОH для загрузки файлов в SFTP. Он работает, но иногда TCP-соединение отключается, когда файл загружается, что приводит к усеченному файлу на сервере.Как пользоваться ОАО «СФТФ»?

Я узнал, что команда reput на серверах SFTP возобновляет загрузку. Как я могу отправить команду репутации в АО?? Возможно ли это?

Вот мой код:

public void upload(File file) throws Exception 
{ 
    JSch jsch = new JSch(); 

    Session session = jsch.getSession(USER, HOST, PORT); 

    session.setPassword(PASSWORD); 

    java.util.Properties config = new java.util.Properties(); 
    config.put("StrictHostKeyChecking", "no"); 
    session.setConfig(config); 

    session.connect(); 

    Channel channel=session.openChannel("sftp"); 
    channel.connect(); 
    ChannelSftp sftpChannel = (ChannelSftp)channel; 


    sftpChannel.put(file.getAbsolutePath(), file.getName()); 

    channel.disconnect(); 
    session.disconnect(); 
} 

ответ

2

я нашел способ. Используйте "положить" метод с параметром RESUME:

sftpChannel.put(file.getAbsolutePath(), file.getName(), ChannelSftp.RESUME); 

Мой код стал:

public static void upload(File file, boolean retry) { 
    try 
    { 
     System.out.println("Uplodaing file " + file.getName()); 

     JSch jsch = new JSch(); 
     Session session = jsch.getSession(USER, HOST, PORT); 
     session.setPassword(PASSWORD); 

     java.util.Properties config = new java.util.Properties(); 
     config.put("StrictHostKeyChecking", "no"); 
     session.setConfig(config); 

     session.connect(); 

     Channel channel = session.openChannel("sftp"); 
     channel.connect(); 
     ChannelSftp sftpChannel = (ChannelSftp) channel; 

     if (!retry) 
      sftpChannel.put(file.getAbsolutePath(), file.getName(), ChannelSftp.OVERWRITE); 
     else 
      sftpChannel.put(file.getAbsolutePath(), file.getName(), ChannelSftp.RESUME); 

     channel.disconnect(); 
     session.disconnect(); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
     upload(file, true); 
    } 

} 
Смежные вопросы