在没有中间文件的情况下将 Azure blob 直接上传到 SFTP 服务器

Uploading a Azure blob directly to SFTP server without an intermediate file

我正在尝试将 Azure blob 直接上传到 SFTP 服务器。

从本地位置上传文件很简单:

using (var sftp = new SftpClient(connectionInfo)){
    sftp.Connect();
    using (var uplfileStream = System.IO.File.OpenRead(fileName)){
        sftp.UploadFile(uplfileStream, fileName, true);
    }
    sftp.Disconnect();
}

有没有办法将 blob 从 blob 存储直接复制到 SFTP 服务器?

  1. CloudBlob.OpenReadSftpClient.UploadFile组合:

    using (var blobReadStream = blockBlob.OpenRead())
    {
        sftp.UploadFile(blobReadStream, remotePath, true);
    }
    
  2. 或将SftpClient.CreateCloudBlob.DownloadToStream合并:

    using (var sftpWriteStream = sftp.Create(remotePath))
    {
        blockBlob.DownloadToStream(sftpWriteStream);
    }
    

第一种方法在 SFTP 方面应该更快,因为 SftpClient.UploadFile 已优化,与 SftpClient.Create 返回的 SftpFileStream 相比。