Sitecore 管道上传处理器

2024-01-06

我正在使用 UploadProcessor 阻止特定文件上传到 MediaLibrary。 一切正常,我可以看到 Sitecore 的警报消息。但是,Sitecore 的错误消息并不真正用户友好“无法上传一个或多个文件。请参阅日志文件了解更多详细信息”

因此,我想为用户添加额外的警报框。下面是我的代码,但 javascript 不起作用。

有些人希望我使用“SheerResponse”,但 Sitecore 文档提到了这一点

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

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


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

您需要做出许多改变。我只是将它们列在这里,你可以在我的 Github Gists 中找到所有代码:

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


1)扩展和更新MediaFolder.js仅当扩展名是配置中指定的扩展名时,才检查文件大小与图像大小

if (file.size > this.uploadLimit() || this.uploadImageLimitReached(file)) {
    ...
}

2) Update MediaFolder.xml页面包含上面的JS。修改旁边的代码,继承自Sitecore.Shell.Applications.Media.MediaFolder.MediaFolderForm并压倒一切OnLoad and OnFilesCancelled,呈现受限扩展和最大图像大小设置,以便将它们传递给 Javascript 并显示友好的警报。

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

3) Update Attach.xaml.xml代码旁边检查图像大小,继承自Sitecore.Shell.Applications.FlashUpload.Attach.AttachPage并压倒一切OnQueued method:

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" />

您仍然可以(并且应该)将管道保持在适当的位置,但请注意我的之前的回答 https://stackoverflow.com/a/27791457/661447我给出的“受限扩展”配置设置现在已更改(更改为单个设置,而不是将其传递到管道中)。要点包含

请注意,我已经使用 Sitecore 7.2 rev 140526 对此进行了测试,因此基本代码是从那里获取的。如果您使用不同的版本,那么您应该检查基本 C#、JS 和 XML 代码与我提供的内容是否匹配。代码被注释以显示发生了什么变化。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sitecore 管道上传处理器 的相关文章

随机推荐