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>

 

 

 

页面代码
<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>
点击客户端代码
<script type="text/javascript">
        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;
        }
    }

 

 

 很多属性, 我就不多做介绍~ 因为我相信你的理解能力, 而且这些属性不难理解, 对吧~!!

 

 

!!

posted @ 2010-08-18 23:16  -小卓-  阅读(1306)  评论(0编辑  收藏  举报