Sitecore管道上传处理器

时间:2015-01-07 16:23:59

标签: javascript upload sitecore alert

我正在使用UploadProcessor阻止特定文件上传到MediaLibrary。 一切都很好,我可以看到提醒Sitecore的消息。但是,Sitecore的错误消息实际上并不是用户友好的“无法上传一个或多个文件。有关详细信息,请参阅日志文件”

所以,我想为用户添加额外的警报框。下面是我的代码,但是javascript无效。

enter image description here

有些人希望我使用“SheerResponse”,但Sitecore Document提到

  

uiUpload管道不是作为Sheer事件的一部分运行,而是作为表单加载过程的一部分来响应回发。这是因为上传的文件仅在“真实”回发期间可用,而不是在纯粹的UI事件期间。从这个意义上讲,uiUpload管道并未设计为提供UI。为了向用户提供反馈,处理器应该采用一些发出JScript代码的技巧。   http://sdn.sitecore.net/Articles/Media/Prevent%20Files%20from%20Uploading/Pipeline%20upload.aspx

你知道如何实现警报框吗?

1 个答案:

答案 0 :(得分:2)

媒体库中的上传控件使用flash上​​传文件。作为此上传过程的一部分,使用JavaScript检查文件大小,并在上载之前进行客户端验证。

您需要进行一些更改。我要在这里列出它们,你可以在我的Github Gists中找到所有代码:

https://gist.github.com/jammykam/54d6af46593fa3b827b4


1)如果扩展名为config

,则扩展并更新MediaFolder.js文件以仅根据图像大小检查文件大小
if (file.size > this.uploadLimit() || this.uploadImageLimitReached(file)) {
    ...
}

2)更新MediaFolder.xml页面以包含上述JS。修改代码,继承自Sitecore.Shell.Applications.Media.MediaFolder.MediaFolderForm并覆盖OnLoadOnFilesCancelled,以呈现受限扩展和最大图像大小设置,以便将这些设置传递给Javascript并显示友好警报。

settings.Add("uploadImageLimit", ((long)System.Math.Min(ImageSettings.MaxImageSizeInDatabase, Settings.Runtime.EffectiveMaxRequestLengthBytes)).ToString());
settings.Add("uploadImageRestrictedExtensions", ImageSettings.RestrictedImageExtensions);

3)更新Attach.xaml.xml codebeside以检查图片大小,继承自Sitecore.Shell.Applications.FlashUpload.Attach.AttachPage并覆盖OnQueued方法:

if (ImageSettings.IsRestrictedExtension(filename) && num > maximumImageUploadSize)
{
    string text = Translate.Text("The image \"{0}\" is too big to be uploaded.\n\nThe maximum image size that can be uploaded is {1}.", new object[] { filename, MainUtil.FormatSize(maximumImageUploadSize) });
    this.WarningMessage = text;
    SheerResponse.Alert(text, new string[0]);
}
else
{
    base.OnQueued(filename, lengthString);
}

4)使用新设置添加配置包含。

<setting name="Media.MaxImageSizeInDatabase" value="1MB" />
<setting name="Media.RestrictedImageExtensions" value=".jpg|.jpeg|.png|.gif|.bmp|.tiff" />

你仍然可以(并且应该)保持管道的位置,但是我的previous answer注意到了我提供的限制扩展&#34;配置设置现在已更改(进入单个设置而不是将其传递到管道中)。

包含

请注意,我已使用Sitecore 7.2 rev 140526对此进行了测试,因此基本代码是从那里获取的。如果您使用的是其他版本,则应检查基本C#,JS和XML代码是否与我提供的相匹配。代码被注释以显示已更改的内容。

以上在内容编辑器中有效,它在页面编辑器中不起作用!在Sitecore 7.2+中使用SPEAK对话框,看起来他们使用不同的管道集。这需要更多调查(提出另一个问题,并指定您正在使用的Sitecore版本)。