Sitecore的媒体库MAXSIZE(Sitecore Media Library MaxSize

2019-10-21 13:07发布

在Sitecore的,我想只有对图像文件设置上传MAXSIZE。 我们可以更新Media.MaxSizeInDatabase设置MAXSIZE,但是这个设置包括媒体库中的所有文件。

有什么办法来设置MAXSIZE只图像文件? 或者,我可以创建这个任何验证?

先感谢您!!

=========更新==========

我试图用所有代码和设置,但它不工作。 我认为代码是好的,但我可能必须确保配置的地方。 当我添加“的xmlns:补丁”顶部属性中,像下面

<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">

它显示错误“Unrecongnized属性的xmlns:补丁”。 所以,我添加的配置中的“/配置/ Sitecore的”元素在一个web.config,象下面

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    .....
    <sitecore database="SqlServer">
        <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
            <sitecore>
                <processors>
                    <uiUpload>
                        <processor mode="on" type="ImageMaxSize.ImageItemValidator2, Sitecore.Kernel" patch:before="processor[@type='Sitecore.Pipelines.Upload.CheckSize, Sitecore.Kernel']">
                            <restrictedExtensions hint="raw:AddRestrictedExtension">
                                <!-- Be sure to prefix with a dot -->
                                <extension>.jpg</extension>
                                <extension>.jepg</extension>
                                <extension>.png</extension>
                                <extension>.bmp</extension>
                            </restrictedExtensions>
                        </processor>
                    </uiUpload>
                </processors>
            </sitecore>
        </configuration>

这是行不通的

Answer 1:

您可以在自己的处理器补丁到uiUpload检查文件大小对于某些类型的,在一个非常相似的方式来此帖来自迈克·雷诺兹以限制某些类型的文件进行上传 。

public class ImageCheckSize : UploadProcessor
{       
    public List<string> RestrictedExtensions { get; set; }

    public ImageCheckSize()
    {
        RestrictedExtensions = new List<string>();
    }

    public void Process(UploadArgs args)
    {
        Assert.ArgumentNotNull((object) args, "args");
        if (args.Destination == UploadDestination.File)
            return;

        foreach (string index in args.Files)
        {
            HttpPostedFile file = args.Files[index];
            if (!string.IsNullOrEmpty(file.FileName) && IsRestrictedExtension(file.FileName))
            {
                if ((long) file.ContentLength > MaxImageSizeInDatabase)
                {
                    args.ErrorText = string.Format("The image \"{0}\" is too big to be uploaded. The maximum size for uploading images is {1}.", file.FileName, MainUtil.FormatSize(MaxImageSizeInDatabase));
                    Log.Warn(args.ErrorText, this);
                    args.AbortPipeline();
                    break;
                }
            }
        }
    }

    private bool IsRestrictedExtension(string filename)
    {
        return RestrictedExtensions.Exists(restrictedExtension => string.Equals(restrictedExtension, Path.GetExtension(filename), StringComparison.CurrentCultureIgnoreCase));
    }

    public static long MaxImageSizeInDatabase
    {
        get
        {
            return Sitecore.Configuration.Settings.GetLongSetting("Media.MaxImageSizeInDatabase", 524288000L);
        }
    }
}

然后添加在所需配置的变化。 创建一个新的配置文件/App_Config/Includes (例如ImageSizeCheck.config)

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">

  <sitecore>
    <processors>
      <uiUpload>
        <processor mode="on" type="Custom.Business.Pipeline.Upload.ImageCheckSize, Custom.Business"
                   patch:before="processor[@type='Sitecore.Pipelines.Upload.CheckSize, Sitecore.Kernel']">
          <restrictedExtensions hint="list">
            <extension>.jpg</extension>
            <extension>.png</extension>
          </restrictedExtensions>
        </processor>
      </uiUpload>
    </processors>

    <settings>
      <setting name="Media.MaxImageSizeInDatabase" value="1MB" />
    </settings>

  </sitecore>
</configuration>

您还需要添加另一个处理器进入attachFile处理器,如果使用者将一个新的文件,以现有的媒体项目来处理-用dotPeek看到在执行Sitecore.Pipelines.Attach.CheckSize,Sitecore.Kernel

一个需要注意的情况是,所显示的错误消息是不太友好,但在日志文件被正确地记录错误:(



文章来源: Sitecore Media Library MaxSize