Пользователь загружает файл, мне нужно защитить его паролем, а затем заархивировать его на сервер хранения, который отличается от сервера, на котором выполняется мой код.Поэтому я использую AESEncrypter для шифрования файла и jcraft.jsch.ChannelSftp для передачи файла на сервер.
public ResponseEntity<ResponseWrapper> uploadFile(@RequestParam("uploads") MultipartFile file) throws Exception {
FileOutputStream fos = new FileOutputStream("outputfile.zip");
AESEncrypter aesEncrypter = new AESEncrypterBC();
aze=new AesZipFileEncrypter(fos, aesEncrypter);
aze.add(file.getOriginalFilename(), file.getInputStream(), "test123");
JSch ssh = new JSch();
Session session = ssh.getSession("username", "Servername", 22);
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setPassword("*****");
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
sftpChannel.put(file.getInputStream(), "/storedfiles/outputfile.zip");
}
Файл передается на сервер, но когда я загружаю этот переданный файл и пытаюсь открытьон говорит: «Обнаружены ошибки при открытии» .. «Вы не можете извлечь файл .. Вы хотите исправить проблемы».Не уверен, почему я получаю эту проблему, также он создает файл на локальном сервере, какая строка вызывает это?
Я пытался заменить эту строку
aze=new AesZipFileEncrypter(fos, aesEncrypter);
на
aze=new AesZipFileEncrypter("outputfile.zip", aesEncrypter);
но не работает.