回答編集履歴
3
てすと
test
CHANGED
@@ -5,3 +5,27 @@
|
|
5
5
|
- CORSに問題がなければ一旦fetchで受け取ってダウンロードさせて完了したら別ページにとぶ
|
6
6
|
- サーバー側のHTMLでやるならダウンロードページに飛んだうえでmetaでダウンロードさせたあと、setTimeoutでlocation.hrefで完了ページに移動
|
7
7
|
- 完了ページにダウンロードしたいデータを埋め込んで開き、download属性のついたアンカータグをクリックしてダウンロード
|
8
|
+
|
9
|
+
# 参考
|
10
|
+
- fetchして別ページにとぶ
|
11
|
+
```javascript
|
12
|
+
<script>
|
13
|
+
document.addEventListener('click',async({target})=>{
|
14
|
+
if(target.matches('#btn')){
|
15
|
+
const url="sample.csv"; //ダウンロードしたいcsvのurl
|
16
|
+
const download="download.csv"; //ダウンロードしたときの名前
|
17
|
+
const comppage="complete.html"; //飛びたいページ
|
18
|
+
const blob=await fetch(url).then(res=>res.blob());
|
19
|
+
const fr = new FileReader();
|
20
|
+
fr.addEventListener('load',e=>{
|
21
|
+
const href=e.target.result;
|
22
|
+
const a=Object.assign(document.createElement('a'),{download,href});
|
23
|
+
a.click();
|
24
|
+
location.href=comppage;
|
25
|
+
});
|
26
|
+
fr.readAsDataURL(blob);
|
27
|
+
}
|
28
|
+
});
|
29
|
+
</script>
|
30
|
+
<input type="button" value="download" id="btn">
|
31
|
+
```
|
2
調整
test
CHANGED
@@ -4,4 +4,4 @@
|
|
4
4
|
たとえば
|
5
5
|
- CORSに問題がなければ一旦fetchで受け取ってダウンロードさせて完了したら別ページにとぶ
|
6
6
|
- サーバー側のHTMLでやるならダウンロードページに飛んだうえでmetaでダウンロードさせたあと、setTimeoutでlocation.hrefで完了ページに移動
|
7
|
-
|
7
|
+
- 完了ページにダウンロードしたいデータを埋め込んで開き、download属性のついたアンカータグをクリックしてダウンロード
|
1
追記
test
CHANGED
@@ -1,2 +1,7 @@
|
|
1
1
|
サーバー側の処理では無理です
|
2
2
|
jsでやるか、リダイレクトした先でダウンロードをさせるかのどちらかがよいでしょう
|
3
|
+
|
4
|
+
たとえば
|
5
|
+
- CORSに問題がなければ一旦fetchで受け取ってダウンロードさせて完了したら別ページにとぶ
|
6
|
+
- サーバー側のHTMLでやるならダウンロードページに飛んだうえでmetaでダウンロードさせたあと、setTimeoutでlocation.hrefで完了ページに移動
|
7
|
+
|