I'm working on a Chrome extension to be used as an internal tool. Its required behavior is:
You've done quite a lot of research. Indeed, regular web pages cannot write to the user's filesystem without any plugins or extensions. Also, the HTML5 Filesystem API only provides access to a virtual filesystem, as you've observed.
However, you are confusing the
chrome.fileSystem API with the HTML5 FileSystem API. Unlike the HTML FileSystem API, Chrome's
fileSystem (app) API can directly write to the user's filesystem (e.g.
%USERPROFILE%\Documents), specified by the user.
This API is only available to Chrome apps, not extensions. This is not a problem, especially since you're developing an internal tool, because you can install the app and extension, and use message passing to communicate between the extension (page action) and app (file system access) (example).
chrome.downloads: Since your extension is internal, you can probably force users to get on the beta/dev channel in order to use this API. The only limitation of this API is that the files will be saved in (a subdirectory of) the user-defined Downloads folder.
chrome.downloads API is now avaiable in all channels, including the stable branch (since Chrome 31).