Code Monkey home page Code Monkey logo

simplezip.js's Introduction

SimpleZIP.js

A light-weight library for building uncompressed ZIP files, in NodeJS or in the Browser. Supported file name encoded by utf-8.

Getting Started

With NPM / NodeJS

npm install --save simplezip.js

And then

const SimpleZip = require("simplezip.js");
const fs = require("fs");

let files = [{
    name: "FirstFile.txt",
    data: "The contents"
}, {
    name: "SecondFile.txt",
    data: Buffer.from("Also, the contents",'utf8')
}];

// This returns an ArrayBuffer
let data = SimpleZip.GenerateZipFrom(files);

fs.writeFileSync("output.zip", new Buffer(data), {encoding: 'binary'});

With HTML / Javascript

It's easy! Add simplezip.min.js to your project, then add

<script type="text/javascript" src="?...../simplezip.min.js"></script>

to your headers, and then:

var files = [{
    name: "FirstFile.txt",
    data: "The contents"
}, {
    name: "SecondFile.txt",
    data: new Uint8Array([65, 66, 67, 68])
}];

var data = SimpleZip.GenerateZipFrom(files);
// Can then convert to a blob and download the file
var blob = new Blob([data], {type: "octet/stream"});
var url = window.URL.createObjectURL(blob);

// Append to document, or whatever you want to do
var el = document.createElement("a");
el.href = url;
el.target = '_blank';
el.download = "output.zip";
el.innerHTML = "Download!"
document.getElementsByTagName("body")[0].appendChild(el);

API

Note that all 'files' passed to the SimpleZip API should be of the form

{
    name:string,
    data:ArrayBuffer|Uint8Array|string
}

SimpleZip.GenerateZipFrom([files])

A static method to create the entire ZIP file all at once. This allocates the exact amount of space required, and fills it with the files specified.


new SimpleZip(expectedSize)

Creates a new SimpleZip object, and allocates expectedSize bytes for the entire ZIP file. If this isn't enough, it will re-allocate later when adding new files.


SimpleZip#appendFiles([files])

Appends the specified files to the ZIP file. Will re-allocate space to fit them all if required.


SimpleZip#appendFile(file)

Just a helper function. Calls appendFiles with the file wrapped in an array.


SimpleZip#generate()

Appends the final ZIP records, and returns the ZIP file in an ArrayBuffer. Will re-allocate space to fit the extra records if required.


SimpleZip#ensureRemainingSpace(remaining)

Expands the capacity of the underlying ArrayBuffer to ensure at least remaining bytes are free to be filled. This also includes ZIP entry records and headers etc. So if you're resizing it to fit a file with a certain size, then add about 100 bytes more per file for the file names and ZIP entries etc.


simplezip.js's People

Contributors

jamezo97 avatar eugenejao avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.