简体   繁体   中英

JSZip extract file objects

I am extracting a zip file with JSZip by doing the following:

jszip.loadAsync(zipFile)
['then'](function(zip) {
    return bluebird.map(Object.keys(zip.files), function (filename) {
        // converts the compressed file to a string of its contents
        return zip.files[filename].async('string').then(function (fileData) {
            // fileData is a string of the contents
        })
    })
})

However, the output of this extraction is an array of strings of the file contents. I was wondering if it was possible to get an array of file objects as the output instead because I need the file object later.

I have tried to do

new File(fileData.split('\n'), filename)

But it loses the original file formatting.

Any suggestions?

The File constructor takes a list of BufferSource (ArrayBuffer, Uint8Array, etc), Blob or string. If you split the content on \\n , you will remove these \\n . File will then concatenate each string without re-adding the new lines.

Use a blob instead:

return zip.files[filename].async('blob').then(function (fileData) {
    return new File([fileData], filename);
})

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM