如何在内存中创建一个html文件给定一些文本,然后命名文件,创建其内容类型然后将其放入流而不写入设备,我只需要流。
我将内容作为/
发送到网络服务。
我可以使用这样的东西,但我不想实际拥有一个物理文件,而只是流,以便我可以转换为它的字节表示并发送它,我也没有路径..只是没有确定如何解决这个问题
byte[]
我希望流知道文件名为using (FileStream fs = File.Create(path))
{
Byte[] info = new UTF8Encoding(true)
.GetBytes("<html><p>Some test to save in mycontent.html</p></html>");
fs.Write(info, 0, info.Length); //i do not want to generate the file
}
,内容类型为mycontent.html
,内容为流格式或text/html
。
答案 0 :(得分:3)
请勿使用FileStream
,而应使用MemoryStream
。例如:
using (var ms = new MemoryStream())
{
Byte[] info = new UTF8Encoding(true).GetBytes("<html><p>Some test to save in mycontent.html</p></html>");
ms.Write(info, 0, info.Length);
ms.Position = 0;
//Do something with your stream here
}
请注意,没有流“知道”文件名将是什么。您将该元数据设置为用于将其发送到客户端的过程的一部分。
答案 1 :(得分:1)
只需使用MemoryStream
using (MemoryStream mem = new MemoryStream())
{
// Write to stream
mem.Write(...);
// Go back to beginning of stream
mem.Position = 0;
// Use stream to send data to Web Service
}
答案 2 :(得分:-1)
一旦离开使用区块的范围,流就会关闭并处理掉。 Close()调用Flush()。 Flush()正是您想要避免的。
尝试覆盖Flush(),以便在调用时不执行任何操作。
public class MyStream : FileStream
{
public override void Flush()
{
//Do nothing
reutrn;
}
}