多部分 Returns 字节或 InputStream 不确定如何将其上传到 FTP 服务器
Multipart Returns Bytes or InputStream not sure how to upload it to FTP server
下面是我们拥有多部分对象的代码 - 它将包含字节或输入流
Map<String, MultipartFile> multipartRequestParams = request.getFileMap();
MultipartFile multipartFile = multipartRequestParams.get("file");
multipartFile.getBytes() (or) multipartFile.getInputStream
如何为此定义网关并发送文件
gateway.upload(multipartFile.getBytes(), multipartFile.getOriginalFilename(), remoteDirectory);
@MessagingGateway
public interface UploadGateway {
@Gateway(requestChannel = "toSftpChannel")
void upload(@Payload byte[] file, @Header("filename") String filename, @Header("path") String path);
}
@Bean
@ServiceActivator(inputChannel = "toSftpChannel")
public MessageHandler toHandler() {
....
....
}
我很困惑如何通过哪种机制将此文件发送到 SFTP 服务器?
multipartFile.getBytes() (or) multipartFile.getInputStream
事实并非如此。本例中的字节数组实际上是从 InputStream
中提取的。所以,根据你的描述,他们是同时出现的
您的其余代码没问题。将字节数组(或该文件 InputStream
)作为 @Payload
并将其他有用数据作为 @Header
.
是完全正确的
要将该数据传输到 SFTP,您应该使用 SftpMessageHandler
,它支持 byte[]
和 InputStream
作为来自 toSftpChannel
的请求消息的有效负载。在文档中查看更多信息:https://docs.spring.io/spring-integration/docs/current/reference/html/sftp.html#sftp-outbound.
filename
header 可以从 SftpMessageHandler
的 setFileNameGenerator(FileNameGenerator fileNameGenerator)
选项中使用。您只需从为该 FileNameGenerator
合同提供的消息中获取此 header。
可以对 path
header 执行类似的操作,从本质上讲,应该借用 setRemoteDirectoryExpressionString(String remoteDirectoryExpression)
选项,例如 setRemoteDirectoryExpressionString("headers.path")
.
所有这些信息都在提到的文档中。
下面是我们拥有多部分对象的代码 - 它将包含字节或输入流
Map<String, MultipartFile> multipartRequestParams = request.getFileMap();
MultipartFile multipartFile = multipartRequestParams.get("file");
multipartFile.getBytes() (or) multipartFile.getInputStream
如何为此定义网关并发送文件
gateway.upload(multipartFile.getBytes(), multipartFile.getOriginalFilename(), remoteDirectory);
@MessagingGateway
public interface UploadGateway {
@Gateway(requestChannel = "toSftpChannel")
void upload(@Payload byte[] file, @Header("filename") String filename, @Header("path") String path);
}
@Bean
@ServiceActivator(inputChannel = "toSftpChannel")
public MessageHandler toHandler() {
....
....
}
我很困惑如何通过哪种机制将此文件发送到 SFTP 服务器?
multipartFile.getBytes() (or) multipartFile.getInputStream
事实并非如此。本例中的字节数组实际上是从 InputStream
中提取的。所以,根据你的描述,他们是同时出现的
您的其余代码没问题。将字节数组(或该文件 InputStream
)作为 @Payload
并将其他有用数据作为 @Header
.
要将该数据传输到 SFTP,您应该使用 SftpMessageHandler
,它支持 byte[]
和 InputStream
作为来自 toSftpChannel
的请求消息的有效负载。在文档中查看更多信息:https://docs.spring.io/spring-integration/docs/current/reference/html/sftp.html#sftp-outbound.
filename
header 可以从 SftpMessageHandler
的 setFileNameGenerator(FileNameGenerator fileNameGenerator)
选项中使用。您只需从为该 FileNameGenerator
合同提供的消息中获取此 header。
可以对 path
header 执行类似的操作,从本质上讲,应该借用 setRemoteDirectoryExpressionString(String remoteDirectoryExpression)
选项,例如 setRemoteDirectoryExpressionString("headers.path")
.
所有这些信息都在提到的文档中。