Skip to content
LogoLogo

Getting Started

Installation

CDN

For CDN usage, load the ESM build directly from a CDN such as esm.sh or jsDelivr:

<script type="module">
  import {fromEvent} from 'https://esm.sh/file-selector';
 
  document.addEventListener('drop', async evt => {
    const files = await fromEvent(evt);
    console.log(files);
  });
</script>

Usage

From a drag event

Convert a DragEvent to File objects. Dropped directories are traversed recursively and flattened into a single list, with each entry's location preserved on its path property.

import {fromEvent} from 'file-selector';
 
document.addEventListener('drop', async evt => {
  const files = await fromEvent(evt);
  console.log(files);
});

From a file input

Convert a change event for an <input type="file"> to File objects:

import {fromEvent} from 'file-selector';
 
const input = document.getElementById('myInput');
input.addEventListener('change', async evt => {
  const files = await fromEvent(evt);
  console.log(files);
});

From file-system handles

Convert FileSystemFileHandle items to File objects:

import {fromEvent} from 'file-selector';
 
// Open the file picker
const handles = await window.showOpenFilePicker({multiple: true});
// Get the files
const files = await fromEvent(handles);
console.log(files);

CommonJS

const {fromEvent} = require('file-selector');
 
document.addEventListener('drop', async evt => {
  const files = await fromEvent(evt);
  console.log(files);
});