Наличие загружаемого файла в HTML5 довольно просто в коде.
<a href="/files/whateverFile.txt" download="fileNameForUser.txt">
Это берет файл в местоположении href и передает его в ОС для загрузки этого файла с именем файла в параметре download = "fileName".
Чего я не понимаю, так это когда вы делаете
<a href="data:application/txt;charset=utf-8,theseAreTheFileContents" download="fileName.txt">
Это попросит пользователя загрузить файл fileName.txt, в котором внутри содержится текст «theseAreTheFileContents». Данные находятся на самой странице, и браузер не ищет никаких других URL-адресов для требуемых данных.
Почему содержимое файла в href? Href рассказывает браузеру о местонахождении определенного ресурса. Почему бы не иметь больше полей в загружаемых якорях? Такие как
<a href="null" datatype="application/txt" charset="utf-8" data="theseAreFileContents" download="fileName.txt">
Разве это не ясно? Href не должен означать больше, чем одна конкретная вещь.