Skip to content
MNB PHPExcelDeveloper Guide
AI

Application workflows

HTTP APIs and AJAX Uploads

Build secure upload, preview, import, status, and export endpoints without tying the library to one framework.

Level
Advanced
Reading time
15 min
Package
mnb/mnb-phpexcel
Updated
handleAjaxUpload()api()apiHttp()ajaxUploader()

Handle an uploaded spreadsheet#

upload.php
$response = MnbExcel::handleAjaxUpload(
    $_FILES['spreadsheet'],
    [
        'directory' => __DIR__ . '/../storage/uploads',
        'allowed_extensions' => ['xlsx', 'xls', 'ods', 'csv', 'tsv'],
        'max_size_mb' => 250,
        'validate_package' => true,
    ]
);

header('Content-Type: application/json');
echo json_encode($response);

Dispatch a structured application action#

PHP
$response = MnbExcel::api('preview', [
    'path' => $storedPath,
    'sheet' => 'Products',
    'limit' => 25,
], $pdo);

Available workflows include upload, preview, import, import-many, status, and export.

Use the complete HTTP endpoint helper#

spreadsheet-api.php
$response = MnbExcel::apiHttp([
    'bearer_tokens' => [getenv('SPREADSHEET_API_TOKEN')],
    'allowed_origins' => ['https://admin.example.com'],
    'csrf_token' => getenv('SPREADSHEET_CSRF_TOKEN'),
    'hmac_secret' => getenv('API_HMAC_SECRET'),
    'rate_limiter' => $rateLimiter,
    'rate_limit' => 60,
    'rate_window_seconds' => 60,
    'base_path' => '/spreadsheet',
], $pdo);

$response->emit();

Generate a browser upload client#

PHP
echo MnbExcel::ajaxUploader('/spreadsheet-api.php?action=upload', [
    'field_name' => 'spreadsheet',
    'accept' => '.xlsx,.xls,.ods,.csv,.tsv',
    'max_size_mb' => 250,
]);