2013-09-09 5 views
0

crosspost: https://orchard.codeplex.com/discussions/456226Получить размер каталога сайта в Orchard

В Orchard, каждый сайт (или не позволяют Multitenancy), кажется, имеет свою собственную папку в средствах массовой информации (основной файл папка для сада). Я хочу получить весь размер файла текущего сайта (ergo, папка в Media).

Я выкопал в Рамку и попал в FileSystemStorageProvider, который кажется перспективным с классом FileSystemStorageFolder и GetSize().

Однако мне было интересно, если кто-нибудь еще проверил это, прежде чем я начну экспериментировать с этим классом.

Любая информация или рекомендации будут высоко оценены. Благодаря!

ответ

0

Не нашел простой способ сделать это, но скопировал в основном из рамки Orchard. Вам потребуется следующее:

private FileSystemStorageProvider _filesystemProvider; 
private ShellSettings _settings; 

И тогда вам нужно определить путь для хранения сайта:

var mediaPath = HostingEnvironment.IsHosted 
           ? HostingEnvironment.MapPath("~/Media/") ?? "" 
           : Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Media"); 
storagePath = Path.Combine(mediaPath, _settings.Name); 

Наконец, вот моя функция для вычисления для хранения определенной папки (в данном случае, папка с корневыми папками арендатора/сайта):

public double GetSiteStorage() 
     { 
      var folders = _filesystemProvider.ListFolders(storagePath); 
      long totalSize = 0; 

      foreach (var folder in folders) 
      { 
       totalSize += folder.GetSize(); 
      } 

      return (totalSize/1024/1024); 
     } 

Это возвращает двойной для используемого МБ. Надеюсь, это поможет кому-то :)