2016-11-11 1 views
1
public static void main(String[] args) { 
String SFTPHOST = "10.20.30.40"; 
int SFTPPORT = 22; 
String SFTPUSER = "username"; 
String SFTPPASS = "password"; 
String SFTPWORKINGDIR = "/export/home/kodehelp/"; 

Session  session  = null; 
Channel  channel  = null; 
ChannelSftp channelSftp = null; 

try{ 
      JSch jsch = new JSch(); 
      session = jsch.getSession(SFTPUSER,SFTPHOST,SFTPPORT); 
      session.setPassword(SFTPPASS); 
      java.util.Properties config = new java.util.Properties(); 
      config.put("StrictHostKeyChecking", "no"); 
      session.setConfig(config); 
      session.connect(); 
      channel = session.openChannel("sftp"); 
      channel.connect(); 
      channelSftp = (ChannelSftp)channel; 
      channelSftp.cd(SFTPWORKINGDIR); 
      URL url = new URL("https://65.media.tumblr.com/839a07990f2b1ffa32065513c6224493/tumblr_oe6t3aYpHc1qfilt7o1_500.jpg"); 
      BufferedImage image = null; 
      image = ImageIO.read(url); 

      **File f = new File(FILETOTRANSFER); 
      channelSftp.put(new FileInputStream(f), f.getName());** 
    }catch(Exception ex){ 
     ex.printStackTrace(); 
    } 

} 

Ich weiß nicht, wie Sie Bild auf SFTP-Server speichern. Ich bin verwirrt, was anstelle diesen zwei Zeilen zu schreibenSpeichern Sie Bilder auf SFTP-Server mit Java

File f = new File(FILETOTRANSFER); 

channelSftp.put(new FileInputStream(f), f.getName()); 

Ich verwende JSch Bibliothek mit SFTP zu verbinden

Antwort

1

Das Problem ist, dass Sie das Bild in ein BufferedImage einlegen, aber das ist nicht ein Darstellung können Sie direkt auf einen SFTP-Server schreiben.

Es ist viel einfacher, direkt einen InputStream für die URL zu öffnen und auf dem SFTP-Server zu speichern. (Mit)

Sie müssen dann einen geeigneten Dateinamen - hier nehme ich den letzten Teil der URL nach dem letzten Schrägstrich, der die gleiche Wirkung wie in Ihrem Code hat.

URL url = new URL(
     "https://65.media.tumblr.com/839a07990f2b1ffa32065513c6224493/tumblr_oe6t3aYpHc1qfilt7o1_500.jpg"); 
String path = url.getPath(); 
channelSftp.put(url.openStream(),path.substring(path.lastIndexOf('/')+1)); 
+0

Letzte Zeile channelSftp.put (url.openStream(), pathstring (path.lastIndexOf ('/'))); geben Sie den Fehler "Zugriff verweigert". Aber wenn ich den pathstring (path.lastIndexOf ('/')) zu "1.jpg" änderte, funktioniert es großartig. Vielen Dank für Ihre Hilfe. –

+0

Ich habe verstanden, warum pathstring (path.lastIndexOf ('/')) nicht funktioniert. Weil es Teilstrings gibt, die von "/" ausgehen. Und der Name des Bildes (oder der Datei) beginnt niemals mit "/". –

+0

@ParthPatel Ich sehe. Sie können dem Rückgabewert von 'lastIndexOf'' + 1' hinzufügen. Ich habe die Antwort aktualisiert. –

Verwandte Themen