Я пытался загрузить файлы в каталог Dynami c в SFTP. Когда я загружал некоторые файлы, первый файл всегда загружался в последний каталог. После этого файл отдыха будет загружен в правильный каталог. Когда я сделал режим отладки, я увидел, что каждый первый файл будет загружен во временный каталог, который уже установлен весной. Я не знаю, как установить значение этой временной директории на правильное значение. Пожалуйста, помогите мне решить проблему. Или, может быть, у вас есть другой способ загрузить и создать правильный каталог Dynami c. Пожалуйста, дайте мне знать. Вот код:
private String sftpRemoteDirectory = "documents/"
@MessagingGateway
public interface UploadGateway {
@Gateway(requestChannel = "toSftpChannel")
void upload(File file, @Header("dirName") String dirName);
}
@Bean
@ServiceActivator(inputChannel = "toSftpChannel")
public MessageHandler handler() {
SftpMessageHandler handler = new SftpMessageHandler(sftpSessionFactory());
SimpleDateFormat formatter = new SimpleDateFormat("yyMMdd");
String newDynamicDirectory = "E" + formatter.format(new Date())+String.format("%04d",Integer.parseInt("0001") + 1);
handler.setRemoteDirectoryExpression(new LiteralExpression(sftpRemoteDirectory + newDynamicDirectory));
handler.setFileNameGenerator(message -> {
String dirName = (String) message.getHeaders().get("dirName");
handler.setRemoteDirectoryExpression(new LiteralExpression(sftpRemoteDirectory + dirName));
handler.setAutoCreateDirectory(true);
if (message.getPayload() instanceof File) {
return (((File) message.getPayload()).getName());
} else {
throw new IllegalArgumentException("File expected as payload!");
}
});
return handler;
}