将文档直接写入请求流。使用中间 没有意义MemoryStream
。和StreamReader
/StreamWriter
用于处理文本文件,而 a.docx
是二进制文件格式,所以也不要使用它们。
WebRequest request =
WebRequest.Create("ftp://ftp.example.com/remote/path/document.docx");
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(username, password);
using (Stream ftpStream = request.GetRequestStream())
{
document2.SaveToStream(ftpStream, Spire.Doc.FileFormat.Docx);
}
或使用WebClient.OpenWrite
:
using (var webClient = new WebClient())
{
const string url = "ftp://ftp.example.com/remote/path/document.docx";
using (Stream uploadStream = client.OpenWrite(url))
{
document2.SaveToStream(uploadStream, Spire.Doc.FileFormat.Docx);
}
}
MemoryStream
如果 Spire 库需要可搜索的流,则您只需要一个中间体,则Stream
返回的FtpWebRequest.GetRequestStream
不是。我无法测试。
如果是这种情况,请使用:
MemoryStream memoryStream = new MemoryStream();
document2.SaveToStream(memoryStream, Spire.Doc.FileFormat.Docx);
memoryStream.Seek(0, SeekOrigin.Begin);
WebRequest request =
WebRequest.Create("ftp://ftp.example.com/remote/path/document.docx");
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(username, password);
using (Stream ftpStream = request.GetRequestStream())
{
memoryStream.CopyTo(ftpStream);
}
或者,您可以WebClient.OpenWrite
像前面的示例一样使用。
另请参阅类似的问题Zip a directory and upload to FTP server without save the .zip file local in C#。