DEV Community

Cover image for The Art of File Routing
Louis Bertson
Louis Bertson

Posted on

The Art of File Routing

In the world of web development, efficiently handling custom files like images, documents, and uploads is a challenge that every developer faces. Total.js, a cutting-edge Node.js framework, offers a game-changing solution with its ROUTE(FILE ...) functionality. In this article, we'll delve into the intricacies of handling custom files in Total.js and highlight its advantages over common approaches used in other popular web frameworks.

Embracing the Art of Uploading Files

File uploading is a pivotal aspect of modern web applications, but it can often be a hassle to manage. Total.js streamlines this process using the ROUTE('POST /upload/', myupload, ['upload'], 1024) method. Let's dissect this method with an illustrative example:

// File: /controllers/upload.js

exports.install = function() {
    ROUTE('POST /upload/', myupload, ['upload'], 1024); // 1024 kB = max. request size
};

function myupload() {
    var self = this;

    // The "self.files" array encapsulates HttpFile objects
    // Each HttpFile object represents an uploaded file
    console.log(self.files);

    // Implement your custom processing logic here

    self.success(); // Signal successful processing
}
Enter fullscreen mode Exit fullscreen mode

In this snippet, the myupload function leaps into action when a POST request targets the /upload/ route. The 'upload' flag hints that this route handles file uploads, while 1024 determines the maximum request size in kilobytes.

The Art of File Routing

Total.js reinvents the concept of file routing by optimizing performance and dynamically processing static files. This capability finds its expression through the ROUTE('FILE ...') syntax.

Empowering All Files in a Directory

Total.js unleashes a new paradigm for managing files within specific directories:

exports.install = function() {
    ROUTE('FILE /documents/*.*', handle_documents);
    ROUTE('FILE /images/*.jpg',  handle_images);
};

function handle_documents(req, res) {
    // Your genius in handling document files here
    res.file('/path/to/file.pdf'); // Deliver the requested file
}

function handle_images(req, res) {
    // Unleash your magic with image files
    // Modify or process the image as needed
    // Then, use res.file() to serve the customized image
}
Enter fullscreen mode Exit fullscreen mode

In this excerpt, the handle_documents and handle_images functions spring to life when requests for document and image files are sent. The res.file() method plays the role of delivering the desired files to the awaiting client.

Resizing Images: A Total Transformation

Total.js doesn't stop at traditional file handling; it redefines the game with its image resizing prowess. The RESIZE(...) function is a star player in this spectacle:

exports.install = function() {
    RESIZE('/gallery/*.jpg', resize);
};

function resize(image) {
    image.resize(120, 120); // Transform the image to 120x120 pixels
    image.quality(90);      // Set image quality at 90%
    image.minify();         // Shrink the image size
    // The modified, sleek image rests in the temporary directory
}
Enter fullscreen mode Exit fullscreen mode

In this revelation, the resize function takes the stage when a .jpg image request dances into the /gallery/ realm. With finesse, it resizes, optimizes quality, and miniaturizes the image. The revamped image then takes its place in the temporary directory, ready for delivery.

Unveiling the Revolution

Total.js stands as a titan among web frameworks, delivering an unmatched experience in handling custom files. Its innovative approach redefines how we upload, route, and manipulate files. By exploiting the ROUTE(FILE ...) and RESIZE(...) methods, developers are empowered to efficiently process and present diverse files. Total.js isn't just a framework; it's a revolution that takes file handling to a level previously unseen in the web development landscape.

Top comments (0)