2015-06-20 40 views
0

此圖像文件名和路徑驗證代碼適用於Chrome,但不適用於Firefox。即使我上傳正確的圖像文件,它也會顯示驗證錯誤。任何人都可以使此代碼在Firefox中工作?圖像文件名和路徑驗證在Firefox中不起作用,但在Chrome中工作

function add_img(f) { 
    z = f; 
    img_title = $('#img_title' + f + '').val(); 
    img_path = $('#img_path' + f + '').val(); 
    img_desc = $('#img_desc' + f + '').val(); 
    if (img_title == '' || img_path == '') { 
    alert('Please upload a valid image with title.'); 
    return false; 
    } 
    var uploadcontrol = img_path; 
    var reg = /^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))+ (.jpeg|.JPEG|.gif|.GIF|.png|.PNG|.jpg|.JPG)$/; 
    if (uploadcontrol.length > 0) { 
    //Checks with the control value. 
    if (!reg.test(uploadcontrol)) { 
     alert("Only jpg,jpeg,gif,png files are allowed!"); 
     return false; 
    } 
    } 
} 
+1

Firefox中的錯誤是什麼? –

+0

即使我們上傳正確的圖像文件,它也會顯示驗證錯誤。 –

+0

你測試的確切文件名是什麼?另外從你的代碼我不能告訴'f'應該是什麼。 –

回答

0

我不認爲跨瀏覽器的正則表達式實現是有差異的。這可能是因爲你沒有得到在Firefox中檢查的完整路徑,並且正在使用Chrome。 您可以嘗試登錄console.log(uploadcontrol)來檢查兩個瀏覽器中收到的路徑。可能是Firefox不會給你所期望的驅動器號,因此它不能通過正則表達式測試。

+0

我通過console.log(uploadcontrol)進行調試。你是對的。我在Firefox中只有文件名。 –

+0

固定!謝謝。 –

0

出於安全原因,瀏覽器不會顯示實際路徑。但chrome返回c:fakepath /類似的東西。所以這不會影響驗證。但Firefox只返回文件名。所以我只驗證文件名而不是路徑這兩種瀏覽器都適用。

var uploadcontrol = img_path.split(/(\\|\/)/g).pop(); //code to get file name from path 
var reg = /^([a-zA-Z0-9\s_-])+(.jpeg|.JPEG|.gif|.GIF|.png|.PNG|.jpg|.JPG)$/; 
相關問題