ファイルダウンロードで必須となる2つの手順 – cybozu developer networkhttps://developer.cybozu.io/hc/ja/articles/200814380
を参考にして詳細画面から添付ファイルをダウンロードしてローカルに保存するjavascriptを作りました。ローカルへの保存までできるのですが、このままだとすべてテキストファイルになってしまいます。
alink.download = 'ダウンロードファイル.txt'; の所のファイル名をダウンロード元のファイル名に設定するように色々やってみましたが上手くいはません。ご教示お願いいたします。
var filename = fileKeys[i].name でファイル名は取得できるのですが、、、、
// Blobオブジェクトにファイルを格納
const blob = new Blob([xhr.response]);
const url = window.URL || window.webkitURL;
// BlobURLの取得
const blobUrl = url.createObjectURL(blob);
// リンクを作成し、そこにBlobオブジェクトを設定する
const alink = document.createElement('a');
alink.textContent = 'ダウンロード';
alink.download = 'ダウンロードファイル.txt';
alink.href = blobUrl;
alink.target = '_blank';
// マウスイベントを設定
const e = new MouseEvent('click', {view: window, bubbles: true, cancelable: true});
// aタグのクリックイベントをディスパッチする
alink.dispatchEvent(e);
2件のコメント
White様
元々の添付ファイルはtxt以外のなんですか?
alink.download = 'ダウンロードファイル.txt';
ここを拡張子つきのファイル名にすればダウンロードできるはずです。また、試しに
const blob = new Blob([xhr.response]);
の中身(xhr.response)を見てみるのも良いかもしれません。
TO 様
ご教示ありがとうございました。
ファイルをダウンロードさせるには?[JavaScript]:.NET TIPS - @IT (itmedia.co.jp) https://atmarkit.itmedia.co.jp/ait/articles/1603/30/news026.html を参考にして下記のような感じで自己解決いたしました。
function downloadFile(url, filename) {
.
.
link.download = filename;
.
.
添付ファイルのダウンロード操作は、XMLHttpRequesリクエスト、同期処理とファイル名の設定で私のような素人は少し手間取ってしまいました。