Javascript js读取zip中的文件名。(仅客户端脚本)

Javascript js读取zip中的文件名。(仅客户端脚本),javascript,jquery,zip.js,Javascript,Jquery,Zip.js,在表单中有多个文件输入现在我必须检查每个文件输入,zip文件不包含任何无效文件(仅允许doc、docx和pdf) 我写 <script src="https://code.jquery.com/jquery-2.2.1.js" integrity="sha256-eNcUzO3jsv0XlJLveFEkbB8bA7/CroNpNVk3XpmnwHc=" crossorigin="anonymous"></script> <script type="

在表单中有多个文件输入现在我必须检查每个文件输入,zip文件不包含任何无效文件(仅允许doc、docx和pdf)

我写

 <script   src="https://code.jquery.com/jquery-2.2.1.js"   integrity="sha256-eNcUzO3jsv0XlJLveFEkbB8bA7/CroNpNVk3XpmnwHc=" crossorigin="anonymous"></script>    
<script type="text/javascript" src="/js/zip.js"/>
<script type="text/javascript" src="/js/inflate.js"/>
<script type="text/javascript" src="/js/deflate.js"/>
<script type="text/javascript" src="/js/z-worker.js"/>
<script type="text/javascript">
    $(document).ready(function () {
        if((window.location.href.indexOf("LibraryItemUpload`1&ParentId=7d428470-2234-41c0-85f4-a512d51198c6") > -1) || (window.location.href.indexOf("LibraryItemUpload%601&ParentId=7d428470-2234-41c0-85f4-a512d51198c6") > -1)) 
        {
            $("input:file").change(function () {
               var regex=new RegExp("^[A-Za-z0-9 ]+$");
               var file=this.files[0];
                var key = this.value;
                var ze = key.split('\\').pop();
                var filename = ze.split('.')[0];
                var extension=key.split('.').pop().trim().toLowerCase();
                if(extension == 'zip')
                {               
                    zip.createReader(new zip.BlobReader(file), function(reader) {

                      // get all entries from the zip
                      reader.getEntries(function(entries) {
                        if (entries.length) {

                          // get first entry content as text
                          entries[0].getData(new zip.TextWriter(), function(text) {
                            // text contains the entry data as a String
                            console.log(text);

                            // close the zip reader
                            reader.close(function() {
                              // onclose callback
                            });

                          }, function(current, total) {
                            // onprogress callback
                          });
                        }
                      });
                    }, function(error) {

                    });
                }
               if (!regex.test(filename))  {                
                    alert('Please do not use special characters in file name please rename file name and upload it again.');
                    location.reload();
                }
                else {
                    return true;
                }
            });
        }
    });
  </script> 

$(文档).ready(函数(){
if((window.location.href.indexOf(“LibraryItemUpload`1&ParentId=7d428470-2234-41c0-85f4-a512d51198c6”)>-1)|(window.location.href.indexOf(“LibraryItemUpload%601&ParentId=7d428470-2234-41c0-85f4-a512d51198c6”)>-1)
{
$(“输入:文件”).change(函数(){
var regex=new RegExp(“^[A-Za-z0-9]+$”;
var file=this.files[0];
var key=this.value;
var ze=key.split('\\').pop();
var filename=ze.split('.')[0];
var extension=key.split('.').pop().trim().toLowerCase();
如果(扩展名='zip')
{               
createReader(新的zip.BlobReader(文件),函数(读取器){
//从zip获取所有条目
reader.getEntries(函数(条目){
如果(条目长度){
//以文本形式获取第一个条目内容
条目[0]。getData(新zip.TextWriter(),函数(文本){
//文本以字符串形式包含条目数据
console.log(文本);
//关闭zip读取器
reader.close(函数(){
//onclose回调
});
},功能(当前,总计){
//onprogress回调
});
}
});
},函数(错误){
});
}
如果(!regex.test(filename)){
警报('请不要在文件名中使用特殊字符,请重命名文件名并重新上载');
location.reload();
}
否则{
返回true;
}
});
}
});
并编写了从zip.js读取文件名的代码,但流不在zip.createReader函数中

请建议我,如果另一个javascript可用于读取zip文件,我只希望条目对象读取文件名

函数读取条目(条目){
function readEntries(entries) {
    var entryLength = entries.length;
    for (i = 0; i < entryLength; i++) {
        var entry = entries[i];
        var fileName = entry.filename.substring(entry.filename.lastIndexOf("/") + 1); //if inside folder
        var ext = fileName.split(".").pop().toLowerCase();
        if (ext.toUpperCase() == 'DOC' || ext.toUpperCase() == 'PDF' ||
            ext.toUpperCase() == 'DOCX') {
            //logic
        }
    }
}

zip.useWebWorkers = false;//explicitly include (required) zip-workers ['zip.js','zip-fs.js','z-worker.js','inflate.js','deflate.js']

var fileInput = document.getElementById("zipfile");//Input File
fileInput.addEventListener('change', function(event) {
    zip.createReader(new zip.BlobReader(fileInput.files[0]), function(zipReader) {
        zipReader.getEntries(readEntries);
    }, function (error) {
         console.log(error);
    });
});
var entryLength=entries.length; 对于(i=0;i

我没有测试过这段代码,但我以前使用过类似的逻辑。

您的代码看起来不完整,请提供更多代码和错误描述。您是否查看了zip.js文档,其中包含关于在zip中列出条目的信息-