2017-08-31 73 views
0

我正在使用CKFinder 3通过用户身份验证上传文件。由于技术问题,我们没有配置文件,配置在代码中。现在我们必须能够上传带有特殊结尾* .template的文件,这些XML文件包括CDATA-Section中的html。如何在CKFInder中使用代码配置启用HTML上传?

这被CKFinder默认拒绝,所以我想用两个StringMatches“* .xml”和“* .template”扩展ResourceTypeBulder的SetAllowedHtmlExtensionMatchers。这里是SetupConnector的代码

 OwinConnectorFactory connectorFactory = new OwinConnectorFactory(); 
     ConnectorBuilder connectorBuilder = new ConnectorBuilder(); 
     string l_licenseName = "DUMMY"; 
     string l_licenseKey = "DUMMY"; 
     connectorBuilder.SetLicense(l_licenseName, l_licenseKey); 
     connectorBuilder 
      .SetAuthenticator(new CKFinderAuthenticator()) 
      .SetRequestConfiguration(
       (request, config) => 
       { 
        config.SetOverwriteOnUpload(true); 
        config.SetThumbnailSizes(new SizeAndQuality(100, 100, new ImageQuality(80))); 
        config.AddProxyBackend("default", new LocalStorage(@"")); 
        config.AddResourceType("MySite", resourceBuilder => resourceBuilder.SetBackend("default", "")); 
        config.AddAclRule(new AclRule(
           new StringMatcher("*"), 
           new StringMatcher("*"), 
           new StringMatcher("*"), 
           new Dictionary<Permission, PermissionType> { { Permission.All, PermissionType.Allow } })); 
        var defaultBackend = config.GetBackend("default"); 
        var keyValueStoreProvider = new FileSystemKeyValueStoreProvider(defaultBackend); 
        config.SetKeyValueStoreProvider(keyValueStoreProvider); 
        config.SetKeyValueStoreProvider(new EntityFrameworkKeyValueStoreProvider("MyConnection"))); 
       }); 
       app.UseConnector(connectorBuilder.Build(connectorFactory)); 

我必须扩展resourceBuilder使用额外的值,但我不知道如何。 类似于

config.AddResourceType("MySite", resourceBuilder => {resourceBuilder.SetBackend("default", ""); resourceBuilder.SetAllowedHtmlExtensionMatchers ......;}); 

做了编译,但显然是错误的,因为文件无法上传。 这可能是一个初学者的问题,但我卡住了。我可以找到大量的示例来完成此处显示的内容,但是我无法获得正确的关键字以在表达式中找到多个“参数”。 有人可以指出我做错了什么吗?

回答

0

我相信你正在寻找的代码是:

var allowedHtmlExtensions = new[] { 
    new StringMatcher("template"), 
    new StringMatcher("xml") 
}; 

config.AddResourceType("Files", resourceBuilder => { 
    resourceBuilder.SetBackend("default", "files"); 
    resourceBuilder.SetAllowedExtensions(new string[] { "template", "xml", "7z","aiff","asf","avi","bmp","csv","doc","docx","fla","flv","gif","gz","gzip","jpeg","jpg","mid","mov","mp3","mp4","mpc","mpeg","mpg","ods","odt","pdf","png","ppt","pptx","pxd","qt","ram","rar","rm","rmi","rmvb","rtf","sdc","sitd","swf","sxc","sxw","tar","tgz","tif","tiff","txt","vsd","wav","wma","wmv","xls","xlsx","zip" }); 
resourceBuilder.SetAllowedHtmlExtensionMatchers(allowedHtmlExtensions); 
resourceBuilder.SetLazyLoaded(true);        
}); 

请注意,以上传您还需要templatesxml扩展添加到allowedExtensions设置文件。

注意:如果您没有指定AllowedExtensions可以上传任何非常不安全的文件。

+0

不完全正确,但我得到它与您的帮助。如果你没有指定allowedextensions,那么所有的东西都可以被认为是不好的做法。你必须删除字符串中的点,这就像新的StringMatcher(“模板”)... – Mulk

+0

我的答案有什么问题?我总是可以编辑它来改善它。 –

+0

谢谢,我删除了点并添加了注释,尽管我一直认为这些扩展名是显而易见的 - 如果您不否认任何内容,则允许所有内容;)干杯。 –

相关问题