CSV文件上传验证器无法在windows(Chrome和firefox)上工作



我在上传时使用jQuery Validate插件来验证CSV文件。我的js文件中有以下代码。

$("#selector").validate({
    rules: { file_csv: { accept: true, accept: "csv" }},
    messages: {
      file_csv: {accept: 'Please upload a csv file!'}
    }
});

在ubuntu(firefox和chrome)上,它对CSV文件进行验证,并转发到下一阶段的代码。但对于windows,它会抛出"请上传csv文件!"的错误。

您的代码格式化为可读性故障排除:

$("#selector").validate({
    rules: {
        file_csv: {
            required: true, 
            extension: "csv"
        }
    },
    messages: {
        file_csv: {
            accept: 'Please upload a csv file!' // <-- 'accept' rule not used
        }
    }
});

您的代码包含一个明显的错误。。。

您正在为未使用的规则指定错误消息。您的错误消息是为accept方法指定的,但您仅使用requiredextension方法。我不确定这怎么能在任何浏览器中工作。

这个代码应该可以完美地工作:

$("#selector").validate({
    rules: {
        file_csv: {
            required: true, 
            extension: "csv"
        }
    },
    messages: {
        file_csv: {
            extension: 'Please upload a csv file!' 
        }
    }
});

编辑

如果按文件扩展名验证不够强,可以使用accept方法按mime-type验证。但是,您需要为CSV文件指定一个有效的mime-type,即text/csv。请参阅:http://www.ietf.org/rfc/rfc4180.txt和http://en.wikipedia.org/wiki/Comma-separated_values#Toward_standardization

$("#selector").validate({
    rules: {
        file_csv: {
            required: true, 
            accept: "text/csv"
        }
    },
    messages: {
        file_csv: {
            accept: 'Please upload a csv file!' 
        }
    }
});

最新更新