无法使用rebex sftp保存动态创建的内存流
本文关键字:创建 动态 内存 保存 sftp rebex | 更新日期: 2023-09-27 18:02:00
我使用StreamWriter
生成一个动态文件并将其保存在MemoryStream
中。一切似乎都很好,直到我使用rebex sftp保存文件。
他们在网站上给出的例子很好:
// upload a text using a MemoryStream
string message = "Hello from Rebex FTP for .NET!";
byte[] data = System.Text.Encoding.Default.GetBytes(message);
System.IO.MemoryStream ms = new System.IO.MemoryStream(data);
client.PutFile(ms, "message.txt");
但是下面的代码没有:
using (var stream = new MemoryStream())
{
using (var writer = new StreamWriter(stream))
{
writer.AutoFlush = true;
writer.Write("test");
}
client.PutFile(stream, "test.txt");
}
文件"test.txt"被保存,但是它是空的。我需要做的不仅仅是使AutoFlush
工作吗?
写入到MemoryStream后,该流位于末尾。PutFile方法从当前位置读取到末尾。正好是0字节
在传递给PutFile:
之前,您需要将流定位在开始位置。 ...
}
stream.Seek(0, SeekOrigin.Begin);
client.PutFile(stream, "test.txt");
你可能还需要阻止StreamWriter处理MemoryStream:
var writer = new StreamWriter(stream);
writer.Write("test");
writer.Flush();
stream.Seek(0, SeekOrigin.Begin);
client.PutFile(stream, "test.txt");