gpt4 book ai didi

wcf - 如何在 WCF 流模式下获取 Stream 上的 Seek 方法?

转载 作者:行者123 更新时间:2023-12-04 18:20:03 24 4
gpt4 key购买 nike

假设我有一个 WCF 方法

[OperationContract]
bool UploadFile(Stream stream);

如何在 stream 上获取 Seek 功能?

我需要它来满足两个要求:

  1. 读取流的前四个字节以确定文件类型是否具有 50 4B 03 04 ZIP 文件签名,并倒带 (stream.Seek(0, SeekOrigin.Begin))
  2. 从流中读取 DotNetZip Ionic.Zip.ZipFile:ZipFile zip = ZipFile.Read(stream)(需要流可搜索)

最佳答案

正如 CodeCaster 所提到的,您无法寻找 WCF 流。您必须使用不同的方法来解决您的问题:

  1. 为了查看流的 header ,我读取了流的前四个字节,然后使用类似 ConcatenatedStream 的内容。连接您可以放入 MemoryStream 的前四个字节和原始 WCF 流的其余部分。这基本上会缓冲部分流,但连接的流仍然呈现位置 0 的流,无需查找。

  2. 如果 DotNetZip 需要查找的能力,那么它需要能够访问文件的任何部分。您需要将整个 WCF 流读入 MemoryStream 并将其提供给 DotNetZip。一种更有效的替代方法是编写您自己的 Stream 包装类,它只会缓冲到已请求的最高流位置,这样如果 DotNetZip 仅在文件的第一个兆字节中查找,您只会缓冲 1 兆字节的数据(而不是整个 50 GB 的文件)。

关于wcf - 如何在 WCF 流模式下获取 Stream 上的 Seek 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11433860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com