0

交叉邮件: https ://orchard.codeplex.com/discussions/456226

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

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

但是,我想知道在我开始尝试该课程之前是否有其他人检查过这个。

任何信息或建议都将受到高度赞赏。谢谢!

4

1 回答 1

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 返回一个双精度值。希望这可以帮助某人:)

于 2013-09-10T15:12:02.767 回答