fs-web
Bringing a file system abstraction to the browser. fs is a module that allows you to store data in the (modern) browser using an API similar to that of Node's fs module
Implemented in a cross-browser fashion, using IndexedDB.
Installation
Install via npm:
npm install fs-web --save
Example
Writing from a file input.
import { writeFile } from 'fs-web';
let input = document.querySelector('input[type="file"]');
input.addEventListener('change', function(e) {
let file = this.files[0]; // file is a File object.
writeFile(file.name, file).then(function() {
// All done! File has been saved.
});
});
Writing and reading.
import * as fs from 'fs-web';
fs.writeFile('foo/some-file.txt', 'foo')
.then(function(){
return fs.readdir('foo');
})
.then(function(files){
files // -> [ {some-file.txt} ]
});
API
All methods return a Promise.
fs.writeFile(fileName, data)
Saves the file data with the name fileName and returns a Promise. If an error is encountered, the Promise will be rejected with an Error object.
fs.readFile(fileName)
Retrieves the file with the name fileName and returns a Promise. The Promise will resolve with the file's data as an ArrayBuffer.
fs.readString(fileName)
Retrieves the file with the name fileName and returns a Promise. The Promise will resolve with a string representation of fileName.
fs.removeFile(fileName)
Removes the file with the name fileName from storage and returns a Promise. The Promise will resolve even if the fileName doesn't exist.
fs.readdir(fullPath)
Gets the contents of fullPath and returns a Promise. The Promise will resolve with an array of DirectoryEntry objects (see below).
fs.mkdir(fullPath)
Creates a directory at fullPath and returns a Promise.
fs.rmdir(fullPath)
Removes the directory at fullPath, recursively removing any files/subdirectories contained within. Returns a Promise that will resolve when the fullPath is removed.
DirectoryEntry
A DirectoryEntry object is resolved from fs.readdir and represents either a file or a directory. A DirectoryEntry instance contains these properties/methods:
DirectoryEntry#path
The path property is the full path (including file name) for the given file/directory entry.
DirectoryEntry#name
The name of the given entry, either the file or directory name.
DirectoryEntry#dir
The given directory that the file/directory sits in.
DirectoryEntry#type
The type of the entry, either file or directory.
DirectoryEntry#readFile()
A convenience method for calling readFile(fileName). Throws a TypeError if the entry is not of type file.
License
BSD 2 Clause