code/uploader nexray

schedule Created February 20, 2026

tools
code
const fs = require('fs');
const axios = require('axios');
const FormData = require('form-data');
const path = require('path');

async function upload(filePath) {
  try {
    const stats = fs.statSync(filePath);
    const fileSize = stats.size;
    const CHUNK_SIZE = 3 * 1024 * 1024;
    const totalChunks = Math.ceil(fileSize / CHUNK_SIZE);
    const fileId = Math.random().toString(36).substring(2, 15);
    const fileName = path.basename(filePath);

    let finalUrl = null;
    for (let i = 0; i < totalChunks; i++) {
        const start = i * CHUNK_SIZE;
        const end = Math.min(fileSize, start + CHUNK_SIZE);
        
        const buffer = fs.readFileSync(filePath).slice(start, end);

        const form = new FormData();
     
        form.append('file', buffer, { filename: fileName });
        form.append('chunkIndex', i.toString());
        form.append('totalChunks', totalChunks.toString());
        form.append('fileId', fileId);
        form.append('fileName', fileName);

        const response = await axios.post('https://cdn.nexray.web.id/upload', form, {
            headers: { ...form.getHeaders() },
            maxBodyLength: Infinity,
            maxContentLength: Infinity
        });

        if (response.data && response.data.url) {
            finalUrl = response.data.url;
        }
    }
    return finalUrl
    } catch (error) {
       return error.message;
    }
}

upload('./database/assets/allmenu.jpg')