我正在尝试将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服务器?

最佳答案

CloudBlob.OpenReadSftpClient.UploadFile组合:

using (var blobReadStream = blockBlob.OpenRead())
{
    sftp.UploadFile(blobReadStream, remotePath, true);
}

或将SftpClient.CreateCloudBlob.DownloadToStream结合使用:

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



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

关于c# - 无需中间文件即可将Azure Blob直接上传到SFTP服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57065811/

10-13 08:24