Files

The Cloud CMS Bulk Import tool makes it easy to import content from a file system into a Cloud CMS content repository.

Let's imagine that you have some images sitting in an images directory. You wish to ingest these into Cloud CMS as part of an Image Library application.

The image directory might look like this:

images\
    chunio.jpg
    disney.jpg
    pavlov.jpg

These images are just files on disk. They could be any file type, really. Cloud CMS can ingest files of any format including popular desktop formats like Microsoft Office and Adobe PDF as well as audio and video formats.

We can import these images into Cloud CMS by using the cloudcms-packager module like this:

var walk = require("fs-walk");
var fs = require("fs");
var path = require("path");

// create a packager
var PackagerFactory = require("cloudcms-packager");
PackagerFactory.create(function(err, packager) {

    // Create a content type for images
    var contentTypeObject = {
        "title": "Image",
        "type": "object",
        "properties": {
            "title": {
                "title": "Title",
                "type": "string"
            }
        },
        "_qname": "my:image",
        "_type": "d:type",
        "_parent": "n:node"
    };

    packager.addNode(contentTypeObject);

    var imageCount = 0;
    walk.walkSync("./images", function(basedir, filename, stat) {

        var alias = "image-" + (imageCount++);
        var obj = {
            "title": filename,
            "_alias": alias,
            "_type": "my:image"
        };
        packager.addNode(obj);

        packager.addAttachment(alias, "default", path.join(basedir, filename));
    });

    // commit
    packager.package(function(err, archiveInfo) {
        console.log("Wrote archive: " + archiveInfo.filename);
    });
});

For a full example of this code in action, please see:

https://github.com/gitana/cloudcms-packager/tree/master/examples/files/image-library