2012-04-06 85 views
1

我有我的頁面上的asp文件上傳控件。如何在客戶端驗證選定的文件。驗證規則: 1.文件必須是jpeg,png,bmp或gif 2.文件大小必須在25 kb和2 MB以內。 請幫忙。 謝謝。
我曾嘗試下面的代碼來驗證擴展驗證asp文件上傳控制客戶端端

<asp:FileUpload ID="FileUpload2" runat="server"/>      
<asp:CustomValidator ID="CustomValidator1" runat="server" ClientValidationFunction="ValidateFileUpload" ErrorMessage="Invalid file type. Only .gif, .jpg, .png, .bmp and .jpeg are allowed." ControlToValidate="FileUpload2" ValidationGroup="update">&nbsp;</asp:CustomValidator> 
<script language="javascript" type="text/javascript"> 
    function ValidateFileUpload(Source, args) { 
     var fuData = document.getElementById('<%= fuData.ClientID %>'); 
     var FileUploadPath = fuData.value; 

     if (FileUploadPath == '') { 
      // There is no file selected 
      args.IsValid = false; 
     } 
     else { 
      var Extension = FileUploadPath.substring(FileUploadPath.lastIndexOf('.') + 1).toLowerCase(); 

      if (Extension == "jpg" || Extension == "jpeg" || Extension == "png" || Extension == "gif" || Extension == "bmp") { 
       args.IsValid = true; // Valid file type 
      } 
      else { 
       args.IsValid = false; // Not valid file type 
      } 
     } 
    } 
</script> 
+0

我已經編輯我的職務與我的代碼。請拜訪。 – 2012-04-06 16:27:59

+0

有關文件類型驗證,請參閱鏈接:http://www.aspsnippets.com/Articles/ASPNet-FileUpload-File-Extension-Validation.aspx – Vijjendra 2014-01-08 11:10:47

回答

6

您不能確定在通過客戶端腳本文件輸入元素選擇的文件的大小。爲了確定文件的大小,必須具有文件的讀取權限。正如你可能想象的,讓JavaScript讀取計算機上的文件將是一個「非常糟糕的主意」。 ™

我經常看到這類問題,並且認爲文件輸入元素的實際功能存在一些混淆。當用戶選擇一個文件時,文件字節不會被「加載」到這個元素中,因此它們可用於讀取。相反,輸入指定文件位置的參考,以便瀏覽器知道 - 何時發佈表單 - 對文件進行編碼並使用POST進行發送。這個過程是瀏覽器的內部過程,並不以腳本可以利用的方式向客戶端公開。

如果您需要進行文件大小驗證,您應該在可以訪問實際文件字節的服務器上執行此操作。如果您擔心人們使用非常大的文件「淹沒」您的網站,則可以通過配置您的IIS實例來指定最大允許的POST大小。

+0

感謝您清除我對文件輸入的想法。 – 2012-04-06 17:46:52

2

您可以試用ajax控制工具包。它有自己的文件上傳控制。它更涼爽