Telerik RadUpload 文件类型验证
记录Telerik学习过程~
今天记录的是Upload.
你可以使用RadUpload与ASP.NET的自定义验证器。 CustomValidator验证同时支持客户端和服务器端验证。
验证客户端的好处是可以防止的CustomValidator验证时提交的文件有选择的客户端验证函数认为无效的页面。验证功能可以使用validateExtensions()客户端的方法来验证客户端上的文件扩展名。选定的文件必须转移到服务器才能的尺寸或MIME类型的验证。
验证服务器端的优点是您可以访问文件,如大小或MIME类型,甚至检查文件内容的信息。自定义验证器的ServerValidate事件发生后,RadUpload ValidatingFile事件,并有完整的验证。
当使用一个CustomValidator验证,验证器的ControlToValidate属性RadUpload不得设置!
(语言组织能力不好,还是 上代码,上图片 好!)
先上图:
Upload控件需要几个js的支持, Telerik 的 dll 自带了需要的js.
<telerik:RadScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" />
</Scripts>
</telerik:RadScriptManager>
<Scripts>
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" />
</Scripts>
</telerik:RadScriptManager>
<div class="MainWrap">
<div class="TopWrap">
<div class="Holder">
<telerik:RadAsyncUpload runat="server" ID="RadAsyncUpload1" AllowedFileExtensions="jpg,jpeg,png,gif"
MaxFileSize="1048576" OnClientValidationFailed="validationFailed" OnValidatingFile="RadAsyncUpload1_ValidatingFile"
OnFileUploaded="RadAsyncUpload1_FileUploaded" InputSize="42" Skin="Windows7" >
</telerik:RadAsyncUpload>
<asp:Button runat="server" ID="BtnSubmit" Text="上传" />
<p>
选择要上传的图片 (jpg, jpeg, png, gif)
</p>
<p>
图片最大不能超过 1M 大小.
</p>
<div class="ErrorHolder">
</div>
</div>
<div class="Holder Right">
<asp:Panel runat="server" ID="ResultsPanel" Visible="false">
<asp:Panel ID="ValidFiles" Visible="false" runat="server">
<p>
<strong>图像保存到目标文件夹: /File/</strong>
</p>
</asp:Panel>
<asp:Panel ID="InvalidFiles" Visible="false" runat="server">
<p>
<strong>下面的图片不被保存,由于超过最大大小:</strong>
</p>
</asp:Panel>
</asp:Panel>
</div>
<div class="BottomWrap">
</div>
</div>
</div>

点击客户端代码
<div class="TopWrap">
<div class="Holder">
<telerik:RadAsyncUpload runat="server" ID="RadAsyncUpload1" AllowedFileExtensions="jpg,jpeg,png,gif"
MaxFileSize="1048576" OnClientValidationFailed="validationFailed" OnValidatingFile="RadAsyncUpload1_ValidatingFile"
OnFileUploaded="RadAsyncUpload1_FileUploaded" InputSize="42" Skin="Windows7" >
</telerik:RadAsyncUpload>
<asp:Button runat="server" ID="BtnSubmit" Text="上传" />
<p>
选择要上传的图片 (jpg, jpeg, png, gif)
</p>
<p>
图片最大不能超过 1M 大小.
</p>
<div class="ErrorHolder">
</div>
</div>
<div class="Holder Right">
<asp:Panel runat="server" ID="ResultsPanel" Visible="false">
<asp:Panel ID="ValidFiles" Visible="false" runat="server">
<p>
<strong>图像保存到目标文件夹: /File/</strong>
</p>
</asp:Panel>
<asp:Panel ID="InvalidFiles" Visible="false" runat="server">
<p>
<strong>下面的图片不被保存,由于超过最大大小:</strong>
</p>
</asp:Panel>
</asp:Panel>
</div>
<div class="BottomWrap">
</div>
</div>
</div>
<script type="text/javascript">
function validationFailed(sender, eventArgs) {
$(".ErrorHolder").append("<p>验证失败 '" + eventArgs.get_fileName() + "'.</p>").fadeIn("slow");
}
</script>
function validationFailed(sender, eventArgs) {
$(".ErrorHolder").append("<p>验证失败 '" + eventArgs.get_fileName() + "'.</p>").fadeIn("slow");
}
</script>
const int MaxTotalBytes = 1048576; // 1 MB
int totalBytes;
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
ResultsPanel.Visible = true;
}
}
public void RadAsyncUpload1_FileUploaded(object sender, FileUploadedEventArgs e)
{
Label fileName = new Label();
fileName.Text = e.File.FileName;
e.File.SaveAs(Server.MapPath("../file/"+e.File.FileName),true);//保存文件
if (e.IsValid)
{
ValidFiles.Visible = true;
ValidFiles.Controls.Add(fileName);
}
else
{
InvalidFiles.Visible = true;
InvalidFiles.Controls.Add(fileName);
}
}
public void RadAsyncUpload1_ValidatingFile(object sender, Telerik.Web.UI.Upload.ValidateFileEventArgs e)
{
if (totalBytes < MaxTotalBytes)
{
// 没有达到限制的总字节数,运行文件上传
e.IsValid = true;
totalBytes += e.UploadedFile.ContentLength;
}
else
{
// 达到限制的总字节数,放弃文件上传
e.IsValid = false;
}
}
int totalBytes;
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
ResultsPanel.Visible = true;
}
}
public void RadAsyncUpload1_FileUploaded(object sender, FileUploadedEventArgs e)
{
Label fileName = new Label();
fileName.Text = e.File.FileName;
e.File.SaveAs(Server.MapPath("../file/"+e.File.FileName),true);//保存文件
if (e.IsValid)
{
ValidFiles.Visible = true;
ValidFiles.Controls.Add(fileName);
}
else
{
InvalidFiles.Visible = true;
InvalidFiles.Controls.Add(fileName);
}
}
public void RadAsyncUpload1_ValidatingFile(object sender, Telerik.Web.UI.Upload.ValidateFileEventArgs e)
{
if (totalBytes < MaxTotalBytes)
{
// 没有达到限制的总字节数,运行文件上传
e.IsValid = true;
totalBytes += e.UploadedFile.ContentLength;
}
else
{
// 达到限制的总字节数,放弃文件上传
e.IsValid = false;
}
}
很多属性, 我就不多做介绍~ 因为我相信你的理解能力, 而且这些属性不难理解, 对吧~!!
!!
转载于:https://www.cnblogs.com/weialei/archive/2010/08/18/Telerik_Upload.html