Binary & Form-Data

Newgate handles binary uploads and multipart/form-data efficiently.

Binary Data

For Content-Type: application/octet-stream, the body is exposed as a Node.js Buffer.

app.post('/upload-raw', (req, res) => {
    // req.body is a Buffer
    const size = req.body.length;
    fs.writeFileSync('output.bin', req.body);
    res.send(`Received ${size} bytes`);
});

Form-Data

For multipart/form-data, Newgate parses both fields and files.

app.post('/upload', (req, res) => {
    const { fields, files } = req.body;
    
    console.log('User:', fields.username);
    
    if (files.avatar) {
        console.log('Avatar:', files.avatar.filename);
        // files.avatar.buffer contains the file data
    }
});

Options

You can configure upload limits to prevent DoS attacks.

const options = {
  fileSizeLimit: 10 * 1024 * 1024,  // 10MB (default)
  memoryLimit: 50 * 1024 * 1024,    // 50MB (default)
  fileCountLimit: 10                 // Max files (default)
};
Last updated: 12/11/2025 Edit on GitHub