拦截文件流......不可能?

时间:2016-09-23 16:17:30

标签: c#

毫无疑问,这是不可能的,但我想看看是否有人有一个巧妙的建议。我们有一个第三方程序集,可以使用内部方法输出在内部存储在定制数据库中的图像文件' SaveToFile',例如:

3rdParty.Scripting.ImageManager man = new 3rdParty.Scripting.ImageManager("ref");

3rdParty.Scripting.Image itemImg = man.GetImage(orderNumber);

itemImg.SaveToFile("c:\file.jpg")

ItemImg.SaveToFile没有返回类型,只是在内部创建一个位图并将其写入文件流。我们绝对无法访问已编译的方法。

我需要做的是以某种方式拦截文件流并读取位图,我知道这可能不可能,但我不是绝对的专家,所以想看看是否有一种神奇的方法来做到这一点

如果所有其他方法都失败了我将保存文件然后将其读回来,我只是想避免保存到磁盘,我可以直接获取数据并最终将其转换为base64字符串值。

1 个答案:

答案 0 :(得分:8)

不幸的是,除非第三方库提供SaveToStream方法,您可以从外部提供流,否则无法实现您的目标。您必须将内容保存到临时文件中,然后再读回内容。

这就是为什么在设计库时提供将Streams作为I / O参数的方法通常是最佳实践,因为这样可以让消费者控制是否要将其保存到文件,内存或网络流中。