判断是否合法文件名:SPUrlUtility.IsLegalFileName
作者:杨柳@水杉网络
基本信息
程序集
Microsoft.SharePoint.dll
命名空间
Microsoft.SharePoint.Utilities
类型
静态方法
介绍
文档库是SharePoint的重要功能之一,几乎贯穿了整个SharePoint十多年的生命周期。文档库的基本功能就是保存文件,对于上传到文档库的文件名一定会做合规检查,在开发过程中SharePoint提供了这样的方法供我们使用。
方法
位于Microsoft.SharePoint.Utilities.SPUrlUtility类,具体描述如下:
//判断是否合法文件名
public static bool IsLegalFileName(string name)
{
return IsLegalFileName(name, false);
}
使用场景
基于SharePoint文档库提供文档管理的解决方案,很多时候会自己提供上传文件的处理,这种情况下,需要先判断用户提供的文件名是否合法,让人机交互更加顺滑。
比如下面截取了Microsoft.SharePoint.SPFieldFile类中使用此方法的方式:
//验证SPFieldFile类型实例的值是否是有效文件名
public override object ValidateAndParseValue(SPListItem item, string value)
{
//...
if (!string.IsNullOrEmpty(str))
{
if (!SPUrlUtility.IsLegalFileName(str))
{
throw new SPFieldValidationException(SPResource.GetString(CultureInfo.CurrentUICulture, "InvalidFileOrFolderName", new object[] { str }));
}
if (SPUtility.EndsWithAspNetSuffix(str))
{
throw new SPFieldValidationException(SPResource.GetString(CultureInfo.CurrentUICulture, "NoAspNetSuffix", new object[] { str }));
}
}
return value;
}
测试代码
以下代码在SharePoint Powershell命令行工具中执行
#####
# 输出结果:True
#####
[Microsoft.SharePoint.Utilities.SPUrlUtility]::IsLegalFileName("abc.txt");
#####
# 输出结果:False
#####
[Microsoft.SharePoint.Utilities.SPUrlUtility]::IsLegalFileName("~abc.txt");