2016-03-21 75 views
2

共有ドライブにあるHTAアプリケーションを作成しています。私は、アプリケーションがレポートのtxtファイルを生成し、それを保存できるようにすべきであるセクションがあります。Javascript - HTAでtxtファイルを保存する方法

私は、ファイルを保存するときと同じように、どこに保存するのか、何を呼び出すのかを選択できるようにしたいと思いますが、どのように達成するのかわかりません。私が今までに思いついた最善の方法は、ファイルを保存してダウンロードに提供して、それらが(そして名前に合った)場所を選び、その後自動的に保存されたバージョンを削除することです。これは、はっきりとしたものよりもはっきりしているようです。より良い方法がありますか?

EDIT:コメンターは、私はダウンロードを提供するために使用されるコードを尋ね:

を私はレポートのテキストを含む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、 "download"、 "myFile.txt")をダウンロードしようとしました。

+0

_ "アプリケーションがレポートtxtファイルを生成するセクションがあります" _現在のドキュメント内のテキストからファイルが生成されていますか?あなたは 'html'、' javascript'をQuestionに含めることができますか? – guest271314

+0

これは、テキストの長い文字列を生成し、現在変数に保持しているだけです。私が物事を保存するとき、私はActiveXObject( "Scripting.FileSystemObject")でそれらを保存します。それでも問題はありませんが、保存するディレクトリと名前をユーザーが選択できるようにする方法を見つけ出す必要があります。 – linus72982

+0

'a'要素の' download'属性を利用できます。投稿 – guest271314

答えて

0

あなたはobjectURLまたはファイルのdata URIに設定href属性で、a要素、download属性を使用することができます。ユーザがファイル名を指定し、ユーザのファイルシステムでファイルを保存する場所を選択することができ、a要素をクリックしたときにSave Fileダイアログが表示されるはずです

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

関連する問題