2016-10-27 3 views
0

Я создал xml (например) в хранилище Azure и хочу загрузить его на SFTP-сервер напрямую.Проблема с передачей файлов с Azure Storage Blob в SFTP

string name = DateTime.Now.ToString("yyyyMMddhhmmss") + ".xml"; 

     // Retrieve storage account from connection string. 
     CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString")); 

     // Create the blob client. 
     CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 

     // Retrieve a reference to a container. 
     CloudBlobContainer container = blobClient.GetContainerReference("xxxxxxxxxxxx"); 

     // Create the container if it doesn't already exist. 
     container.CreateIfNotExists(); 

     //Create reference to a Blob that May or Maynot exist under the container 
     CloudBlockBlob blockBlob = container.GetBlockBlobReference(name); 

     // Create or overwrite the "something.xml" blob with contents from a string 

     string xml = "some xml"; 

     blockBlob.UploadTextAsync(xml); 

     //Upload file to the sftp server 
     string fpath = "https://someazureserver.blob.core.windows.net/xxxxxxxxx/" + name; 

     sftp.Connect(); 
     try 
     { 
      string INVENTORY = "xxxx/xxxx/xxxx"; //the file path in sftp 
      sftp.Put(fpath, INVENTORY); 
     } 
     finally { sftp.Close(); } 

Я попытался заполнить путь к URL-адресу этого блоба, но это не сработало. Я искал в Интернете, но ничего не нашел о пути файла blob. Есть ли другой способ переноса файлов с лазурного на sftp? Спасибо за любое предложение!

ответ

0

Предполагая, что клиент sftp может извлекать данные через http, я предполагаю, что blob хранится в контейнере, который не настроен для разрешенного доступа. Если вы запустите код с запуском Fiddler, я предполагаю, что вы увидите ошибку проверки подлинности сервера, когда sftp попытается извлечь файл. Если это так, вы можете указать маркер SAS вместе с URL-адресом, который разрешает доступ к файлу, или вы можете настроить контейнер, чтобы разрешить публичный доступ. Смотрите следующие статьи для получения дополнительной информации:

+0

Ahhhh Я только что проверил майкрософт QA, они не имеют эту функцию, но так для меня гг. Похоже, мне нужно найти другой способ сделать это. Спасибо, в любом случае!! Я собираюсь использовать ур ответ. –

Смежные вопросы