file-type-stream

1.0.0 • Public • Published

file-type-stream

Build Status

Wrapper over file-type that makes using it with streams easier.

Install

npm install --save file-type-stream

Requires Node v6+

Usage

fileTypeStream(callback)

See ./test directory for usage examples.

import fileTypeStream from 'file-type-stream'
import { PassThrough } from 'stream'
 
// ...
// s3Client = ....
// ...
 
const through = new PassThrough()
readStream.pipe(fileTypeStream((type) => {
  // since transform streams buffer up to 16kb which
  // is enough to detect the file type, we get
  // the file type even through through hasn't been piped
  // anywhere yet.
 
  console.log('ext', type.ext)
  console.log('mime', type.mime)
 
  // E.g.:
  // We can use that info to open a write stream on aws s3
  // with the correct content type
  client.upload({
    ContentType: type.mime,
    Bucket: 'some-bucket',
    Key: 'some-key',
    Body: through,
  }, null, (err) => {
    // Upload completed!
  })
})).pipe(through)

The code above can be written a bit more intuitively with async/await:

 
import fileTypeStream from 'file-type-stream'
import { PassThrough } from 'stream'
 
// ...
// s3Client = ....
// ...
 
const upload = async (rs) => {
  const Body = new PassThrough()
 
  const { mime } = await new Promise(resolve => {
    rs.pipe(fileTypeStream(resolve)).pipe(Body)
  })
  const response = client.upload({
    Body,
    ContentType: mime,
    Bucket: 'some-bucket',
    Key: 'some-key',
  }).toPromise()
 
  console.log(response)
}

Readme

Keywords

none

Package Sidebar

Install

npm i file-type-stream

Weekly Downloads

160

Version

1.0.0

License

MIT

Last publish

Collaborators

  • olalonde