2017-09-04 41 views
-1

在我的應用程序中,我有一個文件上傳器,它接受單個文件上傳控件中的多個文件,我需要驗證該文件上傳器中所有文件的擴展名以這種方式它應該只接受doc和docx。假設我選擇文件上傳器中的5個文件,所有文件應該是-b.doc,-b.docx,-b.DOC和-b.DOCX,if除了這四個以外,還有其他擴展我應該顯示錯誤消息並清除那些位於該特定文件上傳器中的文件,我如何在下面執行此操作是我的文件上傳器代碼。如何使用ASP .NET驗證多文件上傳器中的所有文件C#

<asp:FileUpload ID="filDoc" runat="server" multiple="multiple"/> 

我嘗試下面的代碼的問題是它顯示警報,而不是它應該顯示錯誤消息應該清除文件上傳後的文件顯示錯誤消息,但它顯示兩個文件

<asp:FileUpload ID="filDoc" runat="server" multiple="multiple" onchange ="checkFileExtension(this);"/> 

<script type="text/javascript"> 
     function checkFileExtension(elem) { 
      var filePath = elem.value; 
      if (filePath.indexOf('.') == -1) 
       return false; 

      var validExtensions = new Array(); 
      var ext = filePath.substring(filePath.lastIndexOf('.') + 1).toLowerCase(); 
      //Add valid extentions in this array 
      validExtensions[0] = 'doc'; 
      //validExtensions[1] = 'pdf'; 

      for (var i = 0; i < validExtensions.length; i++) { 
       if (ext == validExtensions[i]) 
        return true; 
      } 
      alert('The file extension ' + ext.toUpperCase() + ' is not allowed!'); 
      return false; 
     } 
    </script> 

回答

1

上面的代碼看起來很好,我剛剛修改了一些與onChange事件。看看下面:

的JavaScript

<script type="text/javascript" language="javascript"> 
function checkFileExtension() { 
    var chkFile = document.getElementById('<%= filDoc.ClientID %>'); //Gets the control of files uploaded 
    var label = document.getElementById('<%= lblMsg.ClientID%>'); //Gets the control of the label to show message 

    for (var i = 0; i < chkFile.files.length; i++) { //Iterates the control using a for loop 
     var myFile = chkFile.files[i].name.substr(-7); //Gets the file extension name with an array 
     var myFile2 = chkFile.files[i].name.substr(-6); 

     if (myFile == "-B.docx" || myFile == "-b.docx" || myFile2 == "-B.doc" || myFile2 == "-b.doc") { //Validates the file extensions 
       label.innerText = "Valid Format"; //Finally outputs the result 
     } 
     else { 
      label.innerText = "Invalid Format"; 
      chkFile.value = ""; 
     } 
    } 
} 
</script> 

ASP.NET

<asp:FileUpload ID="filDoc" runat="server" onchange="javascript:return checkFileExtension();" /> 
<asp:Label ID="lblMsg" runat="server"></asp:Label> 

注意:我已經附加這裏GIF - 現在你可以看到如何有用。

Sample Image - File Uploader Validation

+0

你就可以生產代碼爲更好的方式 – abc

+0

做這件事我已經展示了一個辦法做到這一點@abc,我相信,你會發現一個更好的。探索一下。 –

+0

沒有問題,但我有另一個文件上傳應該只檢查.wma和.aiff,這意味着它們包含 123.wma或123.WMA或123.aiff或123.AIFF在這裏,我只需要驗證.wma和。 aiff它不包含-b像那樣 它只包含具有擴展名的文件名 – abc