如何将 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 转换为 Byte[] [重复]
无法将“Microsoft.Asp.NetCore.Http.FormFile”类型的对象转换为在 Asp.NetCore MVC Web 应用程序中键入“System.IO.Stream”