crosspost:https://orchard.codeplex.com/discussions/456226
在Orchard中,每个站点(无论您是否启用多租户)似乎都拥有它在Media中的自己的文件夹(Orchard的主文件夹)。我想获取当前站点的整个文件大小(ergo,Media下的文件夹)。
我已经深入研究了这个框架并进入了FileSystemStorageProvider
这似乎很有希望使用FileSystemStorageFolder
类和GetSize()
方法。
然而,在我开始尝试该课程之前,我想知道是否还有其他人检查了这一点。
任何信息或建议都会被高度贬低。谢谢!
答案 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的双精度数。希望这有助于某人:)