Spring boot application. Пользователь выбирает сервер по своему выбору и файл в своей локальной системе, и файл получает SFTP на этот сервер.
Это работает: входной поток читает файл в папку в корневом проекте. Метод sftp нуждается в пути к файлу для работы. Поскольку я не могу получить путь к файлу в системе пользователей и просто получить файл, я передаю его локально, а затем указываю путь оттуда.
Это отлично работает при запуске моего проекта из intellij, а НЕ так прекрасно, когда упаковано в банку
После некоторого чтения похоже, что нехорошо вносить файл в банку. Любые идеи о маршруте, чтобы взять сейчас? Спасибо
public void SFTP(MultipartFile file, String friendlyName, String filePath) throws Exception {
String host = "10.3.152.245"; //host:IP
String user = "cloud";
String password = "Password1";
System.out.println("File path: " + filePath);
try {
String fileName = renameLocal(file);
java.util.Properties config = new java.util.Properties();
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, 22);
session.setPassword(password);
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
sftpChannel.connect();
sftpChannel.cd("/");
sftpChannel.cd(filePath);
sftpChannel.put("\\upload-dir\\" + fileName, ".");
sftpChannel.rename(filePath + "/" + fileName, filePath + "/" + file.getOriginalFilename());
session.disconnect();
sftpChannel.disconnect();
Path path = FileSystems.getDefault().getPath(".\\upload-dir\\" + fileName);
Files.delete(path);
}catch (Exception e){
throw new Exception();
}
}
вышеописанный метод - это метод SFTP, который вызывается, когда пользователь загружает файл. Пользователь статического хоста и проход на данный момент. Как видите, я помещаю файл локально (метод не здесь) в каталог загрузки. Затем предоставив upload-dir \ filename для метода sftpChannel.put