2015-11-06 2 views
1

Как получить дату изменения файла в облачных файлах?Как получить дату изменения файла в облачных файлах?

Я использую .net SDK из облачных файлов (а не место в стойке nu get package).

Я могу получить список моих файлов и вызвать размер GetStorageItemInformation, но я хочу знать, когда файл был помещен в облачные файлы. Если я использую приложение для браузера Cloudberry, я вижу, что у него есть информация.

Входит ли он в .net SDK и где?

+1

Вы используете пакет openstack.net или устаревший пакет csharp-cloudfiles? –

+0

Использовал старый SDK, я думаю, это было проблемой. – Maestro1024

ответ

1

При повторении файлов в контейнере вы можете использовать ContainerObject.LastModified OpenStack.NET. Вот консольное приложение, в котором перечислены все контейнеры в регионе и их файлы с последней измененной меткой времени.

using System; 
using net.openstack.Core.Domain; 
using net.openstack.Providers.Rackspace; 

namespace CloudFilesDateModified 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      const string region = "DFW"; 
      var identity = new CloudIdentity { Username = "username", APIKey = "apikey" }; 

      var cloudfiles = new CloudFilesProvider(identity); 
      foreach (Container container in cloudfiles.ListContainers(region:region)) 
      { 
       Console.WriteLine($"Container: {container.Name}"); 

       foreach (ContainerObject file in cloudfiles.ListObjects(container.Name, region: region)) 
       { 
        Console.WriteLine($"\t{file.Name} - {file.LastModified}"); 
       } 
      } 

      Console.ReadLine(); 

     } 
    } 
} 

Ниже приведены некоторые пример вывода

Container: test 
    foobar - 10/12/2015 2:00:26 PM -06:00 
    foobar/file.png - 11/6/2015 7:34:42 PM -06:00 
    foobar/index.html - 11/6/2015 7:34:31 PM -06:00 

Если контейнер имеет более 10000 файлов, вам нужно будет использовать параметры поискового вызова в цикле через все файлы. В приведенном ниже примере я просматриваю результаты 100 за раз.

foreach (Container container in cloudfiles.ListContainers(region: region)) 
{ 
    Console.WriteLine($"Container: {container.Name}"); 

    int limit = 100; 
    string lastFileName = null; 
    IEnumerable<ContainerObject> results; 
    do 
    { 
     results = cloudfiles.ListObjects(container.Name, region: region, limit: limit, marker: lastFileName); 
     foreach (ContainerObject file in results) 
     { 
      Console.WriteLine($"\t{file.Name} - {file.LastModified}"); 
      lastFileName = file.Name; 
     } 
    } while (results.Any()); 
} 
+0

это замечательно. Есть ли простой способ получить ВСЕ файлы? Кажется, что ListObjects получает первые 10 000. – Maestro1024

+0

Я обновил ответ, чтобы включить пример того, как просматривать страницы, когда в контейнере содержится более 10 000 файлов. –