Le téléchargement de fichiers à partir d'un serveur SFTP en utilisant JSch
Je suis en utilisant jsch pour télécharger des fichiers à partir du serveur, mon code ci-dessous.
public static void downloadFile(TpcCredentialsDTO dto) {
logger.trace("Entering downloadFile() method");
Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;
boolean success = false;
try {
JSch jsch = new JSch();
session = jsch.getSession(dto.getUsername(), dto.getHost(),
dto.getPort());
session.setPassword(dto.getPassword());
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
logger.info("Connected to " + dto.getHost() + ".");
channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;
List<String> filesToDownload = getFilesToDownload(dto,channelSftp);
if (!filesToDownload.isEmpty()) {
for (String fileDownloadName : filesToDownload) {
success = false;
OutputStream output = new FileOutputStream(
"C:\Download\BLT_03112012");
channelSftp.get("BLT_03112012",output);
success = true;
if (success)
logger.info(ServerConstants.DOWNLOAD_SUCCESS_MSG
+ fileDownloadName);
output.close();
}
}else {
logger.info(ServerConstants.NO_FILES_TO_DOWNLOAD
+ ServerUtils.getDateTime());
success = true;
}
} catch (JSchException ex) {
logger.error( ServerConstants.SFTP_REFUSED_CONNECTION, ex);
} catch (SftpException ex) {
logger.error(ServerConstants.FILE_DOWNLOAD_FAILED, ex);
} catch (IOException ex) {
logger.error(ServerConstants.FILE_NOT_FOUND, ex);
}catch (Exception ex) {
logger.error(ServerConstants.ERROR, ex);
}finally {
if (channelSftp.isConnected()) {
try {
session.disconnect();
channel.disconnect();
channelSftp.quit();
logger.info( ServerConstants.FTP_DISCONNECT);
} catch (Exception ioe) {
logger.error(ServerConstants.FTP_NOT_DISCONNECT, ioe);
}
}
}
logger.trace("Exiting downloadFile() method");
}
sftpChannel.get(filename, outputstream) is throwing an error.
2: File not found at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2629) at com.jcraft.jsch.ChannelSftp._get(ChannelSftp.java:977) at com.jcraft.jsch.ChannelSftp.get(ChannelSftp.java:946) at com.jcraft.jsch.ChannelSftp.get(ChannelSftp.java:924) at za.co.tpc.sftpserver.SftpConnection.downloadFile(SftpConnection.java:72) at za.co.tpc.server.execute.FtpMtn.main(FtpMtn.java:44)
Le même code est le Texte de téléchargement de fichier des documents types, mais échoue pour 'Fichier' filetype
OriginalL'auteur FaithN | 2012-12-03
Vous devez vous connecter pour publier un commentaire.
Essayez d'utiliser des chemins d'accès au lieu de stream:
MODIFIER si vous voulez utiliser les FICHIERS et les flux de vérifier cet exemple:
http://kodehelp.com/java-program-for-downloading-file-from-sftp-server/
OriginalL'auteur Carlos Landeras
Veuillez trouver dans le code ci-dessous échantillon comprenant le fichier télécharger et télécharger fonctionnalités. Tirez sur les détails pertinents à partir des fichiers de propriétés où jamais de chaîne marquée dans lt;sftp.de l'utilisateur.nom degt;. Je suis de supprimer le fichier une fois le fichier téléchargé, vous pouvez l'avoir selon votre condition.
Le event et locale les paramètres de ce que j'ai ajouté dans le cadre de la fonctionnalité de téléchargement est de filtrer le fichier(s); vous pouvez passer des paramètres comme par dont vous avez besoin.
Ont placé une case pour configurer le proxy qui peut être utilisé sur les besoins.
OriginalL'auteur Dinesh Lomte
J'ai résolu de cette façon:
Où remotePath est la distance SFTP nom de dossier.
OriginalL'auteur Andrea Girardi