媒体库中的上传控件使用 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 版本)。