谁能帮助我,我想自定义上传功能,我想在其中验证上传的图像类型到图片库
我在哪里可以设置我的脚本??谁能给点建议???
你可能是 Use ItemAdding
。在ItemAdding
事件方法中,只需在成功上传到库之前检查文档的扩展名。如果文档无效而不是通过错误消息
你的代码是这样的:
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";
}
}
}
您可以将 SPItemEventReceiver 用于您的库并将您的逻辑添加到 ItemUpdating() 和 ItemAdding() 方法中。
您可以尝试创建自定义列表模板并替换其中的默认值NewForm.aspx
和EditForm.aspx
页面。这些自定义表单模板不需要包含与默认图片库模板中相同的用户控件和按钮。您可以创建一个具有丰富 UI 的 Silverlight Web 部件来上传图像,例如,您想要的差异越多,您必须编写的代码就越多......
我能想到的一个 OOTB 解决方案将是一个工作流程,您将强制每张新图片运行,但对于最终用户来说,这将是相当大的杀伤力......
当然,如果您能够像其他人建议的那样仅使用ItemAdding中的元数据进行验证,那将节省大量时间。
--- 费尔达