如何将 System.IO.Stream 转换为字符串,然后再转换回 System.IO.Stream

Posted

技术标签:

【中文标题】如何将 System.IO.Stream 转换为字符串,然后再转换回 System.IO.Stream【英文标题】:how to convert System.IO.Stream into string and then back to System.IO.Stream 【发布时间】:2011-05-18 00:17:39 【问题描述】:

我有Stream类型的属性

public System.IO.Stream UploadStream  get; set; 

如何将其转换为 string 并发送到另一端,在那里我可以再次将其转换为 System.IO.Stream

【问题讨论】:

【参考方案1】:

经过一番搜索,此问题的其他答案表明您可以在不知道/使用字符串编码的情况下执行此操作。由于流只是字节,这些解决方案充其量是有限的。该解决方案考虑了编码:

    public static String ToEncodedString(this Stream stream, Encoding enc = null)
    
        enc = enc ?? Encoding.UTF8;

        byte[] bytes = new byte[stream.Length];
        stream.Position = 0;
        stream.Read(bytes, 0, (int)stream.Length);
        string data = enc.GetString(bytes);

        return enc.GetString(bytes);
    

来源 - http://www.dotnetfunda.com/codes/show/130/how-to-convert-stream-into-string

串流 - https://***.com/a/35173245/183174

【讨论】:

这不适用于 ReadOnlyStream:此流不支持查找操作。【参考方案2】:

我不知道你说的将流转换为字符串是什么意思。还有什么是另一面

为了将流转换为字符串,您需要使用编码。如果我们假设流表示 UTF-8 编码字节,下面是一个示例:

using (var reader = new StreamReader(foo.UploadStream, Encoding.UTF8))

    string value = reader.ReadToEnd();
    // Do something with the value

【讨论】:

问题是我使用此字符串值并使用 xml serlization 将其发送到另一端它给出错误 [XmlElement("UploadStream")] public string UploadStream get;放; 您似乎正在尝试将流序列化为 XML。如果是这种情况,请提供有关您的方案的更多详细信息。你想把这个序列化的 XML 发送到哪里? 实际上我们正在开发 Silverlight 应用程序并使用客户端使用此服务创建的 RIA 服务,我们将字符串发送到我们的 asp.net 应用程序。 现在简单的 qustion 在 silverlight 端我有流对象文件,我希望它通过字符串值发送到那一侧。我决定先将 stram 对象转换为字符串,然后将其包装到 xml 对象中 @SOFUser 也许你应该编辑你的问题以包含更多细节,也许是你正在尝试做的代码示例。这可能会帮助您获得更好的答案,即“您正在寻找什么”。您的问题有点含糊,如果没有更多详细信息,我们无法帮助您诊断您遇到的错误。

以上是关于如何将 System.IO.Stream 转换为字符串,然后再转换回 System.IO.Stream的主要内容,如果未能解决你的问题,请参考以下文章

如何在 System.IO.Stream 中转换 System.Byte[]?

如何将 IStream(C++) 转换为 System::IO::Stream(c#),反之亦然

c# 将 system.IO.Stream 转换为 Byte[] [重复]

将字符串转换为 System.IO.Stream [重复]

将 System.IO.Stream 转换为 Byte[] [重复]

无法将“Microsoft.Asp.NetCore.Http.FormFile”类型的对象转换为在 Asp.NetCore MVC Web 应用程序中键入“System.IO.Stream”