此图片文件名和路径验证代码适用于Chrome,但不适用于Firefox。即使我上传了正确的图像文件,它也会显示验证错误。任何人都可以使这个代码在Firefox中运行吗?
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;
}
}
}
答案 0 :(得分:0)
我不认为跨浏览器的正则表达式实现存在差异。可能是你没有在Firefox中获得完整的检查路径并且正在Chrome中获取它。
您可以尝试console.log(uploadcontrol)
检查两个浏览器中收到的路径。可能是firefox没有给出你期望它的驱动器号,因此它没有通过正则表达式测试。
答案 1 :(得分: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)$/;