ブラウザ側はJSでファイルの作成とダウンロードを行う
2761 ワード
ブラウザ側はJSでファイルの作成とダウンロードを行う
1需要
フロントエンドは、取得したデータ生成ファイルをユーザにダウンロードさせる必要があり、従来の
2ソリューション
2.1ダウンロード代替ロード:H 5ラベル属性
2.2生成ファイル:DataURI
jsでコンテンツ生成ファイルをピクチャ
ダウンロード方法にカプセル化
3改善案
条件をさらに緩和するダウンロードタイプ制限を解除 クリックプロセスをキャンセルし、 を直接ダウンロードします.
ファイルタイプの問題を解決するには、ブラウザの新しいAPI(URL.createObjectURL)で解決することができ、
タイプ制限の解決:
ファイルの自動ダウンロード:UIを構築してイベントをクリックし、自動的にトリガーします.
呼び出し
1需要
フロントエンドは、取得したデータ生成ファイルをユーザにダウンロードさせる必要があり、従来の
a
タグhref
の目的ファイルを生成するには、すでに生成されたファイルサーバパスが必要であるだけでなく、多くのブラウザサポートタイプのファイルがデフォルトでロードされ、ユーザに選択パスのダウンロードを提示しない2ソリューション
2.1ダウンロード代替ロード:H 5ラベル属性
HTML5
のa
のラベルにはdownload
の属性が追加されており、リンクをクリックするとブラウザはリンク先のファイルを開くのではなく、ダウンロードに変更されます(現在はchrome、firefox、operaのみサポートされています).ダウンロード時にはリンクの名前を直接ファイル名として使用します(download
にファイル名を付けて変更できます.例えば:download=“file.js”
)2.2生成ファイル:DataURI
jsでコンテンツ生成ファイルをピクチャ
DataURI
に倣うことができる<img src=”data:image/gif;base64,R0lGOXXXXX">
ダウンロード方法にカプセル化
function downloadFile(aLink, fileName, content){
aLink.download = fileName;
aLink.href = "data:text/plain," + content;
}
downloadFile
を呼び出した後、ユーザーはリンクをクリックしてブラウザのダウンロードをトリガーする3改善案
条件をさらに緩和する
ファイルタイプの問題を解決するには、ブラウザの新しいAPI(URL.createObjectURL)で解決することができ、
URL.createObjectURL
は通常、DataURI
の画像を作成するために使用され、ここではファイルをダウンロードするために使用され、パラメータはFile
オブジェクト(input[type=file]で選択したファイル)またはBlob
対象(バイナリオブジェクト)であり、ブラウザに自動的にファイルタイプを設定させるタイプ制限の解決:
content
でObjectURL
を作成し、aLink
に値を割り当てると、ファイルタイプの制限を解決できます.ファイルの自動ダウンロード:UIを構築してイベントをクリックし、自動的にトリガーします.
function downloadFile(fileName, content){
var aLink = document.createElement('a');
var blob = new Blob([content]);
var evt = document.createEvent("HTMLEvents");
evt.initEvent("click", false, false);//initEvent FF
aLink.download = fileName;
aLink.href = URL.createObjectURL(blob);
aLink.dispatchEvent(evt);
}
呼び出し
downloadFile
、ファイル自動ダウンロード