如何从 byte[] 在远程目录中创建文件,因为 PollableChannel 中有 send() 方法。从下面的代码能够将文件发送到远程,但它正在本地机器上创建一个文件。如何避免在本地机器上创建文件?
PollableChannel remoteFileChannel = context.getBean("outputChannel", PollableChannel.class);
Message<byte[]> sendFile = MessageBuilder.withPayload("hi how are you".getBytes()).build();
remoteFileChannel.send(sendFile);
弹簧 sftp 配置:
<bean id="sftpSessionFactory"
class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory"
p:host="${sftp.host}"
p:port="${sftp.port}"
p:user="${sftp.username}"
p:password="${sftp.password}"
p:allowUnknownKeys="${sftp.allowUnknownKeys}" />
<int:channel id="outputChannel">
<int:queue />
</int:channel>
<int-sftp:outbound-channel-adapter id="outboundAdapter"
session-factory="sftpSessionFactory"
channel="outputChannel"
charset="UTF-8"
remote-directory="${sftp.remotedir}"
remote-filename-generator="randomFileNameGenerator" />
如何创建具有随机名称的文件并将字节写入其中?
我尝试过使用自定义文件名生成器类:
@Component("randomFileNameGenerator")
public class RandomFileNameGenerator implements FileNameGenerator {
@Override
public String generateFileName(Message<?> msg) {
long number = (long) Math.floor(Math.random() * 90000000L) + 1000000L;
String fileName = String.format("%d.txt", number);
return fileName;
}
}
在未设置文件名的地方,创建名称类似于“adas-asdfsadf-545sadf.msg”的文件。谁能指出我哪里做错了