任何人都可以帮助我,我想自定义上传功能,我想将上传的图片类型验证到图片库
我在哪里可以设置我的脚本?任何人都可以建议???
答案 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.aspx
和EditForm.aspx
页面。这些custom form templates不需要包含与默认图片库模板中相同的用户控件和按钮。您可以使用丰富的UI创建Silverlight Web部件以上载图像,例如您想要的差异越多,您需要编写的代码就越多......
我能想到的OOTB解决方案是一个工作流程,你可以强制每一张新图片都通过,但这对最终用户来说太过分了......
当然,如果您能够像其他人所建议的那样只使用ItemAdding中的元数据进行验证,那么它将节省大量时间。
---费达