在表单提交之前验证多个文件的文件名

我有一个用户可以上传文件的表单。我需要程序来检查文件是否是 PRN,如果是,它是否在文件名中包含正确的案卷编号和日期。问题是用户可以一次上传多个文件。我已经编写了一个 JavaScript 函数来在用户继续之前检查文件名,但是如何在 JavaScript 中处理多个文件?


我已经编写了检查文件名的函数,但是不知道如何从这里开始处理多个文件。我对 JavaScript 相当陌生。


function checkFilenames(val) {

        let filepath = val.value;

        let n = filepath.lastIndexOf('\\');

        let filename = filepath.substring(n + 1);

        let d;

        if (filename.contains('.prn') || filename.contains('.PRN')) {

            let docketnum = <?php echo $job['docketno']; ?>;

            d = new Date(<?php echo $job['hearing']; ?>*1000).toString();

            let test = d.split(' ');

            let month = test[1];

            let monthsArray = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

            let numMonth;

            for (let i = 0; i < 12; i++) {

                if (monthsArray[i] == month) {

                    numMonth = (i + 1).toString();

                    if (numMonth.length < 2) {

                        numMonth = '0' + numMonth;

                    }

                }

            }

            let day = test[2].toString();

            if (day.length < 2) {

                day = '0' + day;

            }

            let year = test[3];

            let dateToCheck = numMonth + '-' + day + '-' + year;

            if (!(filename.contains(dateToCheck) && filename.contains(docketnum))) {

                alert('Please check the file'); 

            }

        }

    }

当我使用 alert 或 console.log 检查文件名时,它只显示第一个文件。有没有解决的办法?调用PHP函数会更好吗?


翻阅古今
浏览 143回答 1
1回答

慕侠2389804

我认为你最好在这里使用 DOM File API。它允许您访问用户当前在<input type="file">字段中选择的文件。该files字段的属性是一个 FileList,您可以像数组一样循环。File此列表中的各个对象提供对文件名称、大小和类型的直接访问。(使用 FileReader 也可以读取实际的文件内容,但这超出了您在此处需要的范围。)有关如何使用它的更多信息,例如 MDN,https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications
打开App,查看更多内容
随时随地看视频慕课网APP