@tanker/file-ponyfill
TypeScript icon, indicating that this package has built-in type declarations

4.0.0 • Public • Published

A cross-browser ponyfill for File

License NPM Package Minified Size

A common issue with the JavaScript File class is the lack of a constructor in some browsers:

new File(['Hi!'], 'file.txt'); // will throw in Edge and Internet Explorer

Using feature detection, this package will either expose a File ponyfill in browsers lacking a proper constructor, or the native File class in others.

Usage

You can safely use this package as a drop-in replacement for the native File class in all browsers, e.g.:

import { FilePonyfill } from '@tanker/file-ponyfill';

// Get bits from whatever method you want, using fetch() as an example
const response = await fetch('https://your.server.com/path/to/a/report.pdf');
const bits = [await response.arrayBuffer()];

// Construct a file in a cross-browser fashion
const file = new FilePonyfill(bits, 'report.pdf', { type: 'application/pdf' });

// Check what we've got
file instanceof window.Blob; // true
file instanceof window.File; // true
file instanceof FilePonyfill; // true
file.name; // 'report.pdf'
file.type; // 'application/pdf'
file.size; // the size of report.pdf

Note that the ponyfill is built using a clever class hierarchy so that instances will appear as regular File and Blob instances, which can safely be read by a FileReader and used with other APIs working with files

About Tanker

This package is a dependency of the Tanker client SDKs for end-to-end encryption:

Read the documentation to get started.

Package Sidebar

Install

npm i @tanker/file-ponyfill

Weekly Downloads

1,869

Version

4.0.0

License

Apache-2.0

Unpacked Size

10.5 kB

Total Files

13

Last publish

Collaborators

  • jmounier
  • maximerety
  • tankeradmin
  • quentin.vernot.tanker