验证字符串

时间:2016-07-26 11:04:13

标签: javascript

我尝试通过拖放上传CSV文件,但是当我上传其他内容时,如Excel文件,我没有收到警报消息。我做错了什么?

我调用下面的函数,实际应该检查我是否上传了一个CSV文件。稍后,在我验证了文件扩展名后,我读取了该文件,并在表格中填入了我在此(CSV)文件中的数据。这就是除了CSV之外没有其他上传类型很重要的原因。

以下是代码:

function handleFileSelection(evt) {
    evt.stopPropagation(); // Do not allow the drop event to bubble.
    evt.preventDefault(); // Prevent default drop event behavior.

    var files = evt.dataTransfer.files; // Grab the list of files dragged to the drop box.

    if (!files) {
        alert("<p>At least one selected file is invalid - do not select any folders.</p><p>Please reselect and try again.</p>");
        return;
    }

    // "files" is a FileList of file objects. Try to display the contents of each file:
    for (var i = 0, file; file = files[i]; i++) {
        if (!file) {
            alert("Unable to access " + file.name);
            continue; // Immediately move to the next file object.
        }
        if (file.size == 0) {
            alert("Skipping " + file.name.toUpperCase() + " because it is empty.");
            continue;
        }
        if (!file.name.endsWith == ".csv") {
            alert("Skipping " + file.name.toUpperCase() + " because it is not a known text file type.");
            continue;
        }
        startFileRead(file); // Asychronously fire off a file read request.
    } 
} 

2 个答案:

答案 0 :(得分:0)

问题在于这一行:

if (!file.name.endsWith == ".csv") {

您正在将属性的否定与“.csv”进行比较,而您可能希望执行the function with that name

但是,该功能并非在所有浏览器中都可用,因此您可以更好地使用此替代方法:

if (file.name.search(/\.csv$/) === -1) {

备注

第一个if块中的代码永远不会执行,因为!file将始终评估为false。这是因为for循环中的循环条件(中间表达式:file = files[i])将在file变为假的时候退出循环。

答案 1 :(得分:-2)

你有这个:

if (!file.name.endsWith == ".csv") {

你想要这个:

if (!file.name.endsWith(".csv")) {