【问题标题】:Upload data from memory to SFTP server using SSH.NET使用 SSH.NET 从内存上传数据到 SFTP 服务器
【发布时间】:2017-08-29 17:55:27
【问题描述】:

我希望将 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();

【问题讨论】:

    标签: c# .net sftp ssh.net


    【解决方案1】:

    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[] 数组复制数据。

    【讨论】:

      猜你喜欢
      • 2018-11-03
      • 2023-04-01
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-03
      • 2022-01-18
      相关资源
      最近更新 更多