在javascript中获取zip文件的文件名

时间:2015-08-28 09:39:24

标签: javascript zip filenames unzip

在我的应用程序中,我有一个包含一些字段和input file字段的表单,一旦用户上传zip file,我想获取此zip file中包含的文件的名称}。

这是表格:

<input type="text" name="code" value="CodeValue">
<input type="text" name="Comment" value="commentValue">
<input type="file" name="zipFile" value="zipValue" accept="application/zip" 
       onchange="getzipFilesNames();" id="file-input">

<script>
    function getzipFilesNames() {

    }
</script>

我不需要提取文件,我只需要他们的名字。我怎么能用javascript做到这一点?

3 个答案:

答案 0 :(得分:1)

我找到了一种使用JSUnzip库和JSInflate库的简单方法:这是一个示例代码:

        var filesInput = document.getElementById("file-input").files[0];
        var res;

        var reader = new FileReader();
        reader.readAsBinaryString(filesInput);

        reader.onloadend = function(e){
            var myZip = e.target.result;                 
            var unzipper = new JSUnzip(myZip);

            unzipper.readEntries();    
            var myFiles = unzipper.entries;    

            for(var i=0; i<myFiles.length; i++) {
                var name = myFiles[i].fileName; // This is the file name
                var content = JSInflate.inflate(myFiles[i].data); // this is the content of the files within the zip file.
            }
        }   

答案 1 :(得分:-1)

要执行此客户端,您需要使用File API读取文件(有关示例,请参阅this answer),然后解释zip数据以提取文件名。有些库可以帮助完成第二部分,例如jszip

答案 2 :(得分:-1)

function readFiles(){         var files = document.getElementById('files')。files [0];

    var reader = new FileReader()
    reader.readAsBinaryString(files)

    reader.onload = (e) => {
        var myZip = e.target.result            
        var unzipper = new JSUnzip(myZip);            
        var readEntries = unzipper.readEntries();
        var myFiles = unzipper.entries;

        for(var i = 0; i < myFiles.length; i++) {
            var name = myFiles[i].fileName;
            console.log('filename = ', name)                             
        }

    }
}