如何将inputstream转换为InputStreamsource或Datasource以在Spring JavaMail中附加

SRy*_*SRy 9 spring sftp inputstream jakarta-mail jsch

我正在从Jsch channelSFTP获取输入流,如下所示.

   ChannelSftp channelSftp = (ChannelSftp)channel;
   InputStream input=channelsftp.get(unixPath);//unixPath is path to my file which is on SFTP server
Run Code Online (Sandbox Code Playgroud)

我必须unixPath在Spring javaMail附件中附加该文件.但是,当我看到Spring JavaMail addAttachment()方法的API时,它只需要InputStreamSourceDatasource.我的问题是我不能够获得InputStreamSourceDatasource从中我得到的形式SFTP channel.How我可以得到InputStream的InputStreamSourceDatasource从上面的InputStream?提前致谢.

nic*_*ild 29

从文档中,InputStreamSource是一个界面.它的一个实现是InputStreamResource,它有一个接收的构造函数InputStream. 这是JavaDoc.

你应该可以这样设置你的电话:

addAttachment("Not porn", new InputStreamResource(inputStream));
Run Code Online (Sandbox Code Playgroud)

  • 对我来说正是message.addAttachment("somefile name",new ByteArrayResource(IOUtils.toByteArray(channelSftp.get(unixPath)))); 正在工作.谢谢你的想法. (5认同)
  • 请注意,此方法不允许已经打开的`inputStream`. (4认同)
  • 为那个很棒的文件名“不是色情” (2认同)