我想从Sharepoint下载Excel文件,并将其用作tFileInputExcel组件的输入。 tHttpRequest似乎是唯一能够通过身份验证从sharepoint服务器下载文件的组件。
当然有效的方法是通过tHttpRequest下载文件,将响应写入文件,然后使用tFileInputExcel组件加载该文件。
示例,但我不希望这样。
但是,我不想要中间文件并使用tFileInputExcel组件的“stream”功能。我没有实现的是将下载的内容转换为excel组件可用的流:
((java.io.InputStream)globalMap.get("what goes here? And where does it come from?"))
Here's an example使用tFileFetch组件,但此组件无法通过身份验证从sharepoint下载。
答案 0 :(得分:3)
您可以将tHttpRequest
返回的内容写入ByteArrayOutputStream
内的tJavaFlex
,然后将其转换为ByteArrayInputStream
,就可以这样做:
确保取消选中tHttpRequest
上的“将回复内容写入文件”。
在我的示例中,我下载了一个文本文件,因为我没有指向excel的链接,但它的工作方式相同。您可以将文件读取为输入流,如下所示:
答案 1 :(得分:2)
我扩展了tHttpRequest组件并创建了tHttpRequestEx。新组件将ByteArrayInputStream保存到可从tFileInputExcel组件读取的全局映射:
((java.io.ByteArrayInputStream)globalMap.get("tHttpRequestEx_1_INPUT_STREAM"))
I uploaded the component on exchange.talend.com.
当然,使用非标准组件有很大的缺点。这可能是坚持文件下载的更好解决方案,并使用tCreateTemporaryFile来处理创建和删除文件的复杂性。