2016-03-21 6 views
2

Я создаю приложение HTA, которое находится на общем диске. У меня есть раздел, в котором приложение создает файл отчета txt и должно позволить пользователю его сохранить.Javascript - Как сохранить txt-файл с HTA

Я хочу, чтобы пользователь мог выбрать, где его сохранить и как его называть, как и при сохранении файла, но я не могу понять, как его выполнить. Лучший способ, с которым я пришел, - сохранить файл, предложить его для загрузки, чтобы они могли выбрать подходящее для них место (и имя), а затем удалить автоматически сохраненную версию позже. Это звучит взломанно и неуклюже, чем нужно. Есть ли способ лучше?

EDIT: Commenter попросил код, я использовал, чтобы служить загрузки:

Я имел текстовое поле в HTML, который содержит текст отчета -

Затем кнопку сохранения файла:

<a class="btn btn-success" id="saveReportBtn">Save File</a> 

При создании отчета, код добавляет HREF и загрузить атрибуты на кнопку «Сохранить файл»:

document.getElementById('saveReportBtn').href = "data:text/plain, TEST"; 
document.getElementById('saveReportBtn').setAttributeNS(null, "download", ""); 

Однако ничего не происходит, когда я нажимаю кнопку. Я также попробовал загрузить рекомендуемое имя файла (null, "загрузить", "myFile.txt").

+0

_ "У меня есть раздел, в котором приложение создает файл отчета txt" _ Является ли файл, сгенерированный из текста в текущем 'документе'? Можете ли вы включить 'html',' javascript' в вопрос? – guest271314

+0

Он просто генерирует длинную строку текста и удерживает ее в переменной, в настоящее время. Когда я сохраняю вещи, я сохраняю их с помощью ActiveXObject («Scripting.FileSystemObject»). Все работает отлично, но мне нужно выяснить, как разрешить пользователю выбирать каталог и имя для сохранения. – linus72982

+0

Вы можете использовать атрибут 'a',' download', см. Сообщение – guest271314

ответ

0

Вы можете использовать a элемент, download атрибут, с href набор атрибутов для objectURL или data URI файла. Диалог Save File должен отображаться, когда пользователь щелкает a элемент, в котором пользователь может назвать файл и выбрать, куда сохранить файл в файловой системе пользователя

var a = document.getElementById("saveReportBtn"); 
 
var textarea = document.getElementById("reportText"); 
 
    
 
a.addEventListener("click", function() { 
 
    this.href = "data:application/octet-stream," + encodeURIComponent(textarea.value); 
 
    // this.download = ""; 
 
});
<textarea id="reportText" class="col-md-12 form-control"></textarea> 
 
<a href="" class="btn btn-success" id="saveReportBtn">Save File</a>

jsfiddle используя download атрибут https://jsfiddle.net/h51dhdgn/; см. download

+0

К сожалению, это не сработало с HTA, хотя оно работает в браузере для меня. Не совсем уверен, является ли это целевым ограничением HTA или движком IE. – linus72982

+0

@ linus72982 _ «К сожалению, это не с HTA». Можете ли вы включить «HTA» в вопрос? – guest271314

+0

Я добавил его к вопросу. – linus72982

Смежные вопросы