クライアント側のコンテンツをダウンロードする方法
-
26-09-2019 - |
質問
私は、ユーザーが自分のコンピュータ上のテキストファイルにテキストエリアの現在のコンテンツをダウンロードできるようにしたいです。過去に私は、ファイルのダウンロードダイアログをトリガーするデータ、とのURLを指すのiframeを作成します。しかし、この時点では、データはクライアント側です。
だから、それはそれをサーバ側に送信することなく、ユーザーのダウンロードデータを聞かせすることは可能でしょうか?
解決
は、それはそれをサーバ側に送信することなく、ユーザーのダウンロードデータを聞かせすることは可能でしょうか?
一般的なケースではない。
ありません(あなたはURLに含める値をURLエンコードする必要がある、またはdata:
シーケンスがデータ内に表示されたとき、あなたが破損に直面するかもしれないが)それはjanmoesenの答えのように、%nn
のURLで可能です。
しかし、これは非常に長いデータは非現実的となり、古いブラウザやIEでは使用できません。 (IE8が短いデータのURLを直接ナビゲーションをイメージするために使用さではなく、することができます。)あなたがそれをサポートするブラウザ上のプロセスを強化するために、データ・URLの方法を含むことができるようにしながら、あなたはまだのformfulを送るのフォールバックソリューションが必要になりますサーバー側にデータとそれが反応して、ファイルをバックアップ吐く持っています。
(セキュリティ上の理由から、これが唯一のPOST
要求に許可する必要があり、サーバが応答でContent-Disposition: attachment
を含める必要があります。Aコンテンツエコースクリプトがそうでなければ、あなたにクロスサイトスクリプティングの問題を与えることができます。)
他のヒント
、あなたは場所'data:text/plain,' + yourTextarea.value
で新しいウィンドウを開くことができます。ユーザーは、[ファイル/ページ]メニューまたは Ctrlキー + S を使用してそのファイルを保存することができます。