使用 SSH.NET 将数据从内存上传到 SFTP 服务器
Upload data from memory to SFTP server using SSH.NET
我希望将 PDF 直接写入 SFTP 站点。 PDF 是从 ReportExecutionService.Render
(SSRS) 生成的。
ReportExecutionService rsExec = new ReportExecutionService();
我已经能够使用 FileStream
在本地写入文件。我正在生成数百万个文件,所以我希望使用 SSH.NET 将它们直接写入 SFTP。获取 rsExec.Render
结果并使用 SSH.NET 写入 SFTP 的语法是什么?
string deviceInfo = null;
string extension;
string encoding;
string mimeType;
ConsoleApp2.ReportExecution2005.Warning[] warnings = null;
string[] streamIDs = null;
string format = "PDF";
Byte[] results =
rsExec.Render(
format, deviceInfo, out extension, out mimeType, out encoding,
out warnings, out streamIDs);
FileStream stream = File.OpenWrite("C:\test.pdf");
stream.Write(results, 0, results.Length);
stream.Close();
将byte
数组包装成MemoryStream
并使用SftpClient.UploadFile
上传
var client = new SftpClient(host, port, username, password);
client.Connect();
var stream = new MemoryStream(results);
client.UploadFile(stream, "/remote/path/my.pdf");
尽管大多数数据处理库可以直接使用 Stream
API。这样使用起来会更有效率,而不是通过 byte[]
数组复制数据。
我希望将 PDF 直接写入 SFTP 站点。 PDF 是从 ReportExecutionService.Render
(SSRS) 生成的。
ReportExecutionService rsExec = new ReportExecutionService();
我已经能够使用 FileStream
在本地写入文件。我正在生成数百万个文件,所以我希望使用 SSH.NET 将它们直接写入 SFTP。获取 rsExec.Render
结果并使用 SSH.NET 写入 SFTP 的语法是什么?
string deviceInfo = null;
string extension;
string encoding;
string mimeType;
ConsoleApp2.ReportExecution2005.Warning[] warnings = null;
string[] streamIDs = null;
string format = "PDF";
Byte[] results =
rsExec.Render(
format, deviceInfo, out extension, out mimeType, out encoding,
out warnings, out streamIDs);
FileStream stream = File.OpenWrite("C:\test.pdf");
stream.Write(results, 0, results.Length);
stream.Close();
将byte
数组包装成MemoryStream
并使用SftpClient.UploadFile
上传
var client = new SftpClient(host, port, username, password);
client.Connect();
var stream = new MemoryStream(results);
client.UploadFile(stream, "/remote/path/my.pdf");
尽管大多数数据处理库可以直接使用 Stream
API。这样使用起来会更有效率,而不是通过 byte[]
数组复制数据。