romansulzhyk/filament-import
A Filament plugin for importing records from CSV and Excel files into Eloquent models, with configurable columns, validation, and chunked processing for reliable admin-side data imports.
->acceptedFileTypes([...]) with the documented escape hatch ([...ExcelImportAction::ACCEPTED_FILE_TYPES, 'application/octet-stream']) targets a specific, recurring failure mode: files that are genuinely CSV but get labelled differently by an OS, browser, or storage layer. That is a ticket class, not a feature. Being able to configure it rather than patch it is a lever on support volume..tsv support plus content/extension-based detection (extension-less files read as CSV only when the first kilobyte looks like text) widens the set of customer files we can accept without a bespoke parser — useful when deciding whether to promise "we accept your export as-is" in sales or docs.Consider it when:
.txt or extension-less exports, files whose MIME type is mislabelled.Look elsewhere, or plan to build around it, when:
To executives: We can ship customer-facing data import without building a parser from scratch. The latest release makes the common case — someone exports a CSV from another system and uploads it — work by default, including the awkward files that used to generate support tickets: wrong MIME labels, TSV exports, files with odd or missing extensions. The commercial value is faster customer onboarding and fewer import-related escalations, at the cost of one dependency we configure rather than maintain.
To engineering: Adopt it as the file-handling and row-reading layer inside Filament admin panels. v1.1.1 changes the accepted-type surface: ->acceptedFileTypes([...]) replaces the defaults, so use [...ExcelImportAction::ACCEPTED_FILE_TYPES, 'application/octet-stream'] when extending rather than overwriting. Detection is content- and extension-based, not MIME-based, so accepting a type does not open a hole for binary files. TSV is now read as tab-separated CSV, and extension-less files are treated as CSV only if the first kilobyte reads as text. Treat imports as synchronous and request-bound — anything large or long-running needs a queue of our own design, so size limits and timeouts are our responsibility. Pin the version and review future minor releases for default-behaviour changes of this kind.
How can I help you explore Laravel packages today?