https://github.com/linusu/stream-file-type
Get the file type by inspecting a stream
https://github.com/linusu/stream-file-type
Last synced: 11 months ago
JSON representation
Get the file type by inspecting a stream
- Host: GitHub
- URL: https://github.com/linusu/stream-file-type
- Owner: LinusU
- Created: 2017-01-25T20:30:28.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2023-04-25T01:58:26.000Z (about 3 years ago)
- Last Synced: 2025-06-28T19:42:33.319Z (12 months ago)
- Language: JavaScript
- Size: 116 KB
- Stars: 18
- Watchers: 2
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# Stream File Type
Get the [file type](https://github.com/sindresorhus/file-type) by inspecting a stream.
## Usage
```js
import fs from 'node:fs'
import FileType from 'stream-file-type'
const input = fs.createReadStream('cat.jpg')
const detector = new FileType()
// Listen for event...
detector.on('file-type', (fileType) => {
if (fileType === null) {
console.log(`The mime type of "cat.jpg" could not be determined`)
} else {
console.log(`The file "cat.jpg" has the "${fileType.mime}" mime type`)
}
})
// ...or get a Promise
detector.fileTypePromise().then((fileType) => {
if (fileType === null) {
console.log(`The mime type of "cat.jpg" could not be determined`)
} else {
console.log(`The file "cat.jpg" has the "${fileType.mime}" mime type`)
}
})
input.pipe(detector).resume()
```
## API
### `new FileType() => DuplexStream`
Returns a new `DuplexStream` that will detect the file type of the content passing thru. All the data is passed as-is right thru the stream, and can be further piped to another destination.
When enough bytes have come thru to determine the file type (currently 4100) the event `file-type` will be emitted with the result of the detection. The result will either be `null` or an object with `ext` and `mime`.
- `ext` - One of the [supported file types](https://github.com/sindresorhus/file-type#supported-file-types)
- `mime` - The [MIME type](http://en.wikipedia.org/wiki/Internet_media_type)
### `FileType#fileTypePromise() => Promise`
Returns a `Promise` of the detected file type. If the `file-type` event has already been emitted, the promise will be resolved with the result, otherwise the promise will be resolved when the file-type is detected.