file-collection
    Preparing search index...

    file-collection

    file-collection

    NPM version build status Test coverage npm download

    Library to manage large amount of files coming from different sources

    This library allows to manipulate a large amount of files coming from local or remote sources.

    This library allows to have the same code in the browser and in nodejs.

    This package allows to create a file-collection than can further be saved as a ium file (zip file containing all the data and an index.json file).

    The structure of the zip file is at follow:

    • index.json
    • data/
      • all the files

    npm i file-collection

    import { FileCollection } from 'file-collection';

    const fileList; // a fileList resulting from a drag / drop in the browser
    const fileCollection = new FileCollection();
    await fileCollection.appendFileList(fileList);

    // get a zip file that can be reload later
    const iumFile = fileCollection.toIum();

    // list the content of the fileCollection
    for (const file of fileCollection) {
    console.log(file.name);
    console.log(await file.text());
    }
    import { fromIum } from 'file-collection';

    const fileCollection = await fromIum(iumFile);

    for (const file of fileCollection) {
    console.log(file.name);
    console.log(await file.text());
    }

    A webSource is a URL to data like for example https://image-js.github.io/image-dataset-demo/index.json:

    <MyComponent webSource onchange={(fileCollection) => {}}></MyComponent>
    

    Inside the component we should:

    const fileCollection = new FileCollection();
    if (webSource) fileCollection.appendWebSource(webSource);

    If we drag / drop some files we should:

    fileCollection.appendFileList(fileList);
    

    If we drag / drop a 'ium' file we should replace the full fileCollection

    const fileCollection = FileCollection.fromIum(iumArrayBuffer);
    const state = fileCollection.get('state');

    If we want to save as a ium file:

    fileCollection.set('state', myCurrentState);
    const toSave = fileCollection.toIum();

    When fileCollection changes we can always retrieve the various files using:

    const files = [...fileCollection]; // fileCollection is iterable on its files property
    

    Referencing files in the fileCollection

    In an instance of FileCollection we have 2 properties:

    • sources: an array containing the different data sources
    • files: an array containing all the files contained in the different sources

    Some source may contain many files. This is the case of the .iumfiles as well as for the .zip file.

    MIT