2014-02-13 57 views
0

對於我的servlet Java程序,我使用了JSP並使用了用於.xls上傳文件的jQuery客戶端驗證。它已成功爲所有用戶運行,但是我們的一位用戶在上傳.xls文件時出現問題。該程序顯示警告消息,不允許上傳文件。我們還檢查了瀏覽器兼容性JSP中的jQuery驗證

問題:

  1. ,會是什麼原因呢?
  2. 它是否增加了額外的字符和擴展名.xls?如果是的話,那麼解決方案是什麼?
  3. 這是網絡問題嗎?如果是的話,那麼解決方案是什麼?

這是代碼:

function dosearch(){ 

    var reportFile = document.form1.reportFile.value; 

    if(reportFile==null || reportFile==''){ 

     $("#span_filename").show(); 

     if(!window.console) 
     { 
      window.console = {log: function(){}}; 
     }else{ 
     console.log("file name is not valid"+reportFile); 
     } 

    }else if(reportFile.substring(reportFile.indexOf(".")+1)!="xls"){ 

     alert("Please make sure the uploaded file is an excel file"); 


     if(!window.console) 
     { 
      window.console = {log: function(){}}; 
     }else{ 
    console.log("invalid file format or might be its adding extra name or extension name with file , "+reportFile);    
     } 

    }else if(confirm('Do you want to upload now?')){ 

     form1.bt1.disabled=true; 

     $("#pro").show(); 

    document.form1.action='catalog?module=PayrollResultUpload&cmd=doUpload'; 

     document.form1.submit(); 

    } 
+0

沒有代碼它很難說出解決方案。請發佈驗證你做了什麼。 – pikrut

+0

檢查控制檯是否有任何JS錯誤,如果還有其他錯誤,請檢查服務器日誌,請通過示例提供更多詳細信息。幫助調試您的問題。 –

+0

@Amit Bhardawaj顯示的提示信息是什麼? –

回答

0

我在瀏覽器控制檯裏做了一些RND測試,我得到了確切的問題,它在文件之前獲得額外的點(。),但點(。)是不在它位於客戶端系統文件夾結構中的文件中,即C:\ ads.test \ file \ FILE_NAME_HERE.xls。所以,我使用lastIndexOf()方法而不是indexOf()方法。現在它運行良好沒有任何問題。

@Thiamath,感謝您爲我提供的寶貴信息,併成爲這個問題的一部分。

0

嗯,看來你是唯一的驗證XLS擴展。爲了改善這一點,例如檢查xlsx擴展名,我建議你做一個正則表達式模式檢查。 更改行:

}else if(reportFile.substring(reportFile.indexOf(".")+1)!="xls"){ 

與此另一個版本:

}else if(reportFile.substring(reportFile.indexOf(".")+1).match(/^xls.?$/i)){ 

這將檢查是否有在延伸結束字符。 關於網絡問題...您可以定期檢查與AJAX工作人員輪詢連接的連接,並建議用戶沒有連接,但我認爲這種情況太複雜了。最好告訴用戶以後再嘗試上傳;)

+0

@ thiamath您好,我想對.xls進行驗證。 –

+0

@AmitBhardwaj但是,如果問題是用戶發送的文件的擴展名不是xls。預期的結果是一個警報。那麼......問題在哪裏?你想改變JS代碼中的擴展名嗎? – Thiamath

+0

@AmitBhardwaj對不起,如果你覺得我沒有認真對待你的問題。我授予你我對此很認真。但是我有點困惑......你在代碼中提出的警告是用戶報告的那個警報? – Thiamath