问题
I'm attempting to upload am Azure blob directly to an SFTP server.
It's simple to upload a file from a local location:
using (var sftp = new SftpClient(connectionInfo)){
sftp.Connect();
using (var uplfileStream = System.IO.File.OpenRead(fileName)){
sftp.UploadFile(uplfileStream, fileName, true);
}
sftp.Disconnect();
}
Is there a way to copy blobs from blob storage directly to an SFTP server?
回答1:
Either combine CloudBlob.OpenRead with SftpClient.UploadFile:
using (var blobReadStream = blockBlob.OpenRead()) { sftp.UploadFile(blobReadStream, remotePath, true); }
Or combine SftpClient.Create with CloudBlob.DownloadToStream:
using (var sftpWriteStream = sftp.Create(remotePath)) { blockBlob.DownloadToStream(sftpWriteStream); }
The first approach should be a way faster in SFTP terms, as SftpClient.UploadFile
is optimized, comparing to the SftpFileStream
returned by SftpClient.Create
.
来源:https://stackoverflow.com/questions/57065811/uploading-a-azure-blob-directly-to-sftp-server-without-an-intermediate-file