我有以下内容:
string _file; //can have any file path on the file server
if (_file.EndsWith("xls") || _file.EndsWith("pdf") || _file.EndsWith("doc"))
return _file;
扩展程序是硬编码的,我需要将它们放在web.config
中,并使其更具可配置性,使其可以有1个允许扩展名(比如.doc
)或50个允许的扩展名({{ 1}},.doc
,.xls
,.xlsx
,...)。
你有什么建议?
答案 0 :(得分:6)
您可以将其存储在web.config文件中:
<appSettings>
<add key="AllowedExtensions" value=".xls,.pdf,.doc" />
</appSettings>
然后使用Path.GetExtension()
安全地从路径获取文件扩展名。
var allowedExtensions = ConfigurationManager.AppSettings["AllowedExtensions"]
.Split(',');
if (allowedExtensions.Contains(Path.GetExtension(_file)))
return _file;
else
return ??? // What are you going to return if the extension is invalid?
答案 1 :(得分:2)
首先将您允许的扩展名放在app.config
文件中。然后,您可以将它们加载到名为List<string>
的{{1}}中,并使用以下代码:
extensions
或者,如果if (extensions.Any(p => _file.EndsWith(p)))
return _file;
可以为null
_file
答案 2 :(得分:0)
的web.config:
<add key="allowed-extensions" value="pdf,jpg,doc" />
从web.config获取值的函数:
public static string Get(string Key)
{
Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
KeyValueConfigurationCollection settings = config.AppSettings.Settings;
if (settings[Key] != null)
return settings[Key].Value;
else
return "";
}
现在你的职能是:
bool checkExt(string givenExtension){
string[] extensions = Get("alowed-extensions");
for(int i=0;i<extensions.length;i++)
if(extensions[i]==givenExtension) return true;
return false;
}