Last active
March 12, 2016 21:14
-
-
Save RReverser/2850abc148574898667d to your computer and use it in GitHub Desktop.
Async APIs for accessing files from different sources
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Chrome extensions/apps API | |
// Uses Callback #3: (data => { let err = chrome.runtime.lastError; ... }) for Chrome API | |
// Uses Callback #2: (data => { ... }, err => { ... }) for FileSystem API (also Chrome-specific!) | |
// Uses Events onload and onerror for File API (HTML5) | |
// All implemented within one vendor for different APIs (sic!) | |
chrome.fileSystem.chooseEntry({ type: 'openFile' }, fileEntry => { | |
if (chrome.runtime.lastError) { | |
console.error('Error in file open dialog:', chrome.runtime.lastError); | |
} else { | |
fileEntry.file(file => { | |
let reader = new FileReader(); | |
reader.onload = () => console.log(reader.result); | |
reader.onerror = () => console.error('Error during file reading:', reader.error); | |
reader.readAsText(file); | |
}, error => console.error('Error while retrieving a File instance:', error)); | |
} | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// HTML5 File API | |
// Events: onload + onerror | |
document.getElementById('fileInput').addEventListener('change', event => { | |
let file = event.target.files[0]; | |
let reader = new FileReader(); | |
reader.onload = () => console.log(reader.result); | |
reader.onerror = () => console.error(reader.error); | |
reader.readAsText(file); | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Node.js | |
// Callbacks #1: ((err, data) => { ... }) | |
const { readFile } = require('fs'); | |
fs.readFile('file.txt', 'utf-8', (err, contents) => { | |
if (err) { | |
console.error(err); | |
} else { | |
console.log(contents); | |
} | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// HTML5 requestFileSystem proposal (turned out to be Chrome-only, but widely used) | |
// Callback #2: (data => { ... }, err => { ... }) + Events onload and onerror for File API | |
requestFileSystem(PERSISTENT, 1024, fileSystem => { | |
fileSystem.root.getFile('file.txt', fileEntry => { | |
fileEntry.file(file => { | |
let reader = new FileReader(); | |
reader.onload = () => console.log(reader.result); | |
reader.onerror = () => console.error(reader.error); | |
reader.readAsText(file); | |
}, error => console.error(error)); | |
}, error => console.error(error)); | |
}, error => console.error(error)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment