gpt4 book ai didi

c# - 从 File.OpenRead() 返回流

转载 作者:IT王子 更新时间:2023-10-29 03:51:16 27 4
gpt4 key购买 nike

我正在编写允许 ASP.Net 网站检索文件的 WCF 服务(基于 this article )。我的问题是,当我返回流时,它是空白的。

为简单起见,我将代码隔离到一个简单的 winforms 应用程序中,以尝试找出返回流的问题所在,这是代码:

    private Stream TestStream()
{
Stream fs = File.OpenRead(@"c:\testdocument.docx");
return fs;
}

// This method converts the filestream into a byte array so that when it is
// used in my ASP.Net project the file can be sent using response.Write
private void Test()
{
System.IO.MemoryStream data = new System.IO.MemoryStream();
System.IO.Stream str = TestStream();

str.CopyTo(data);
byte[] buf = new byte[data.Length];
data.Read(buf, 0, buf.Length);
}

这段代码的结果是 buf 有 12,587 字节长(文件的正确长度)但它只包含 0。

如果我尝试打开 Word 文档没有问题,我是否遗漏了一些明显的东西?

最佳答案

您忘记了Seek:

str.CopyTo(data);
data.Seek(0, SeekOrigin.Begin); // <-- missing line
byte[] buf = new byte[data.Length];
data.Read(buf, 0, buf.Length);

关于c# - 从 File.OpenRead() 返回流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8741474/

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