2

var a = 'Hello World From Javascript';現在のウィンドウのjavascript変数にテキストデータ(たとえば)があります。私はjavascriptを介して次のことをしたい-

1. open a new window and write the text data to the window.
2. set the content type to text/plain.
3. set the content-disposition to attachment, so that download prompt comes.
4. user downloads the text data as a text file and saves it to his local disk.

これはすべてjavascriptで可能ですか?

サーバーまたはリダイレクトに対して ajax 呼び出しを行うことができることはわかっていますが、この場合は上記の手順に従う代わりに。ただし、この場合、これらの回避策は適用できません。

4

5 に答える 5

5

JS と HTML5 の機能を使用してそれを行うことができます。以下にサンプルコードを示します。

        var fileParts = ['Hello World From Javascript'];

        // Create a blob object.
        var bb = new Blob(fileParts,{type : 'text/plain'});

        // Create a blob url for this. 
        var dnlnk = window.URL.createObjectURL(bb);

        var currentLnk = $('#blobFl').attr('href');

        // blobFl is the id of the anchor tag through which the download will be triggered.

        $('#blobFl').attr('href',dnlnk);
        $('#blobFl').attr('download','helloworld.txt');

        // For some reason trigger from jquery dint work for me.
        document.getElementById('blobFl').click();
于 2013-12-02T11:00:27.507 に答える
3

サーバー要求なしでファイルのダウンロードをトリガーする

残念ながら、これは通常のブラウザ機能でできることではありません。フラッシュやブラウザ固有のプラグインのようなもので必要なものが得られますが、JavaScript内のセキュリティ制限により、ブラウザ内で作成された任意のデータをダウンロードすることはできません。

また、「データ」URLは、すべてのブラウザ/バージョンの組み合わせでサポートされているわけではありません。ユーザーが使用しているブラウザーに制約があるかどうかはわかりませんが、そのソリューションで実行できることを制限する可能性があります。

出典:サーバーリクエストなしでファイルのダウンロードをトリガーする

于 2012-11-25T08:39:16.703 に答える
2

サーバー上に既にファイルがある場合 (サーバー上で PDF を生成して保存するために ajax 呼び出しを行います) - これを行うことができます

window.location.replace(fileUrl);
于 2013-07-09T09:26:49.833 に答える
1

いいえ、Content-Disposition は応答ヘッダーです。サーバーから取得する必要があります。Flash でできると思いますが、お勧めしません。

于 2012-11-25T03:59:37.583 に答える