2015-11-10 171 views
0

我正在做我自己的自定義驗證。目前我有JQuery驗證文件輸入

function doValidation(formData, jqForm, options) { 

    var errors = []; 

    var fullName = $.trim($("#fullName").val()); 
    var emailAdd = $.trim($("#emailAdd").val()); 
    var accountNum = $.trim($("#accountNum").val()); 

    var fileOne = $.trim($("#fileOne").val()); 
    var fileTwo = $.trim($("#fileTwo").val()); 

    if(fullName.length == 0) { 
     errors.push("- Please input your Full name as per Passport"); 
    } 

    if(fullName.length > 80) { 
     errors.push("- Please input your Full name as per Passport"); 
    } 

    if(!validateEmail(emailAdd)) { 
     errors.push("- Your Email address is not in the correct format"); 
    } 

    if(accountNum.length != 14) { 
     errors.push("- Your Account number is not valid"); 
    } 


    if (errors.length > 0) { 
     $('#validation-results').css('display', 'block'); 
     $('#validation-results').html(errors.join('<br>')); 
     return false; 
    } 
    return true; 
} 

正如你可以看到我有fileOne和fileTwo。這些是文件輸入字段。我正在努力實現某些目標,但我遇到了困難。

如何確保文件具有某種類型和大小?我的文件應該大於2MB少和這些

「圖像/ BMP,圖像/ JPEG,圖像/ PJPEG,圖像/ PNG,圖像/ TIFF, 應用/ PDF」

之一。此外,這兩個字段都不是必需的,它可以是一個或另一個(或兩者)。有什麼辦法可以做到這一點?通過JQuery驗證,我使用了require_from_group。我無法再使用JQuery驗證,所以試圖複製類似的東西。

任何意見讚賞。

感謝

回答

0

簡短的回答:你不能這樣做的文件大小驗證可靠與客戶端Javascript。

**根據用戶評論編輯 - ** JQuery驗證使用HTML5瀏覽器中的Files API來支持客戶端文件操作。但是,對於File API的支持在瀏覽器中不可靠。有關詳細信息,請參閱此link和此link

通過設計瀏覽器中的Javascript運行在沙箱中,實際上不能訪問磁盤上的arbritary文件。所以甚至無法計算它們的大小(這需要調用特定於操作系統的API)。

爲了檢查文件類型 - 基本檢查可能是從文件輸入中的文件名驗證擴展名。但是,這是不可靠的,通過將擴展名從.ZIP改爲.JPG,沒有任何東西阻止用戶上傳ZIP文件而不是圖像。

因此,執行此驗證的正確位置是服務器 - 它接收上載文件的字節內容,然後執行必要的驗證。請注意,如果您在服務器上執行這些驗證,那麼無論從哪個用戶代理程序和哪個操作系統平臺上傳文件,驗證邏輯都是相同的。

希望這有助於

+0

JQuery驗證插件如何處理文件大小? –

+0

好的..我不知道HTML 5有一個由Jquery驗證使用的Files API,它可以幫助你做驗證。不過,我仍然對瀏覽器版本支持的可靠性持懷疑態度 –