拦截文件流…不可能

本文关键字:不可能 文件 | 更新日期: 2023-09-27 18:08:35

毫无疑问这是不可能的,但我想看看是否有人有一个巧妙的建议。我们有一个第三方程序集,它可以使用内部方法'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字符串值。

拦截文件流…不可能

不幸的是,除非第三方库提供了一个可以从外部提供流的SaveToStream方法,否则没有办法实现您所追求的。您必须将内容保存到临时文件中,然后再读取内容。

这就是为什么在设计一个库时提供将流作为I/O参数的方法通常是最佳实践,因为这将使消费者能够控制他是想将其保存到文件,内存还是网络流。