Выгрузка данных из памяти на SFTP-сервер с помощью SSH.NET

Я надеюсь писать PDF прямо на сайт SFTP. PDF-файлы создаются из ReportExecutionService.Render (SSRS).

ReportExecutionService rsExec = new ReportExecutionService();

Мне удалось записать файлы локально, используя FileStream. Я создаю миллионы файлов, поэтому я надеюсь записать их прямо в SFTP, используя SSH.NET. Каков синтаксис для получения rsExec.Render результата и записи в SFTP с использованием SSH.NET?

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();

person MaxPowers    schedule 29.08.2017    source источник


Ответы (1)


Скопируйте массив byte в MemoryStream и используйте SftpClient.UploadFile для его загрузки.

var client = new SftpClient(host, port, username, password);
client.Connect();
var stream = new MemoryStream();
stream.Write(results, 0, results.Length);
stream.Position = 0;
client.UploadFile(stream, "/remote/path/my.pdf");
person Martin Prikryl    schedule 30.08.2017