媒體庫中的上傳控件使用Flash來上傳文件。作爲該上傳過程的一部分,文件大小使用JavaScript進行檢查,並在上傳前進行客戶端驗證。
您需要進行多項更改。我只是要在這裏一一列舉了,你可以找到所有的代碼在我的Github的要旨:
https://gist.github.com/jammykam/54d6af46593fa3b827b4
1)擴展和更新MediaFolder.js
文件所要檢查的文件大小隻有在擴展是在配置中指定一個
if (file.size > this.uploadLimit() || this.uploadImageLimitReached(file)) {
...
}
2)更新MediaFolder.xml
頁面包括ABOV圖像大小e JS。修改從Sitecore.Shell.Applications.Media.MediaFolder.MediaFolderForm
繼承的codebeside,並覆蓋OnLoad
和OnFilesCancelled
,以呈現受限制的擴展名和最大圖片大小設置,以便將這些設置傳遞給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注意了現在的「限制的分機」配置設置已經改變(成一個單一的環境,而不是將其傳遞到的管道)。 Gist包含
請注意,我已經使用Sitecore 7.2 rev 140526對此進行了測試,所以基本代碼是從那裏取得的。如果您使用的是不同的版本,那麼您應該檢查基本的C#,JS和XML代碼與我提供的相匹配。該代碼被註釋以向您顯示已更改的內容。
上面的作品在內容編輯器中,它不能在頁面編輯器中使用! Sitecore 7.2+中的哪一個使用SPEAK對話框,看起來他們使用了一組不同的管道。這需要更多調查(提出另一個問題,並指定您正在使用哪個版本的Sitecore)。
完全相同的問題,我在其他答案中反對。很高興你提出了另一個問題,有興趣知道爲什麼這不起作用。順便說一句,標準的Sitecore CheckSize處理器使用完全相同的代碼,它的工作原理... – jammykam
我不能等待搞清楚......任何人? – Jay
如果您有權訪問Sitecore支持,那麼我會考慮提出一張票,看他們是否能提供一些見解。 – jammykam