获取Orchard中Site站点的大小

时间:2013-09-09 09:38:42

标签: directory storage orchardcms media orchardcms-1.6

crosspost:https://orchard.codeplex.com/discussions/456226

在Orchard中,每个站点(无论您是否启用多租户)似乎都拥有它在Media中的自己的文件夹(Orchard的主文件夹)。我想获取当前站点的整个文件大小(ergo,Media下的文件夹)。

我已经深入研究了这个框架并进入了FileSystemStorageProvider这似乎很有希望使用FileSystemStorageFolder类和GetSize()方法。

然而,在我开始尝试该课程之前,我想知道是否还有其他人检查了这一点。

任何信息或建议都会被高度贬低。谢谢!

1 个答案:

答案 0 :(得分: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);
        }

这将返回所用MB的双精度​​数。希望这有助于某人:)