You can use the HTML5 virtual filesystem as your "staging" location before copying it to the final "real" folder. You'll still need to request access to the final folder.
Most details can be found in Exploring the FileSystem API article, but the idea is as follows: chrome.fileSystem API is built on the same principles, you just get different entries when you request them with chrome.fileSystem.chooseEntry
To get a virtual filesystem instead of a real one, you need a different call:
window.webkitRequestFileSystem(
window.TEMPORARY,
5*1024*1024 /* 5MB, adjust as needed, may require "unlimitedStorage" permission */,
onInitFs,
errorHandler
);
function onInitFs(filesystem) {
/* do something with filesystem.root, which is a DirectoryEntry,
just as you would with `chrome.fileSystem.chooseEntry` */
}
For more documentation, MDN is a good place.
Yes, there are big red scary warnings "do not use". It's not portable since only Chrome implements it and other browsers decided not to do that. But for writing specifically a Chrome App it's fine. If you need assurance that Chrome will continue to support it - well, chrome.fileSystem is tightly coupled with it.