自定义SharePoint图片库中的上载文件功能

时间:2012-04-07 12:05:30

标签: sharepoint sharepoint-2010

任何人都可以帮助我,我想自定义上传功能,我想将上传的图片类型验证到图片库

我在哪里可以设置我的脚本?任何人都可以建议???

3 个答案:

答案 0 :(得分:5)

您可能正在使用ItemAdding。在ItemAdding事件方法中,只需在成功上传到Library.if无效文档之前检查文档的扩展名,而不是通过错误消息

你的代码是这样的:

   protected string[] ValidExtensions = new string[] { "png", "jpeg", "gif"};

   public override void ItemAdding(SPItemEventProperties properties)
    {
        string strFileExtension = Path.GetExtension(properties.AfterUrl);

        bool isValidExtension = false;

        string strValidFileTypes = string.Empty;

        using (SPWeb web = properties.OpenWeb())
        {

                foreach (string strValidExt in ValidExtensions)
                {
                    if (strFileExtension.ToLower().EndsWith(strValidExt.ToLower()))
                    {
                        isValidExtension = true;
                    }
                    strValidFileTypes += (string.IsNullOrEmpty(strValidFileTypes) ? "" : ", ") + strValidExt;
                }

      // Here i am going to check is this validate or not if not than redirect to the 
      //Error Message Page. 
                if (!isValidExtension)
                {
                    properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl;
                    properties.RedirectUrl = properties.WebUrl + "/_layouts/error.aspx?ErrorText=" + "Only " + strValidFileTypes + " extenstions are allowed";

                }

        }

    }

答案 1 :(得分:0)

您可以将SPItemEventReceiver用于您的库,并将您的逻辑添加到ItemUpdating()和ItemAdding()方法中。

答案 2 :(得分:0)

您可以尝试创建自定义列表模板,并替换默认的NewForm.aspxEditForm.aspx页面。这些custom form templates不需要包含与默认图片库模板中相同的用户控件和按钮。您可以使用丰富的UI创建Silverlight Web部件以上载图像,例如您想要的差异越多,您需要编写的代码就越多......

我能想到的OOTB解决方案是一个工作流程,你可以强制每一张新图片都通过,但这对最终用户来说太过分了......

当然,如果您能够像其他人所建议的那样只使用ItemAdding中的元数据进行验证,那么它将节省大量时间。

---费达