回答編集履歴

1

追記

2020/10/09 09:08

投稿

tanat
tanat

スコア18713

test CHANGED
@@ -1,3 +1,57 @@
1
+ 追記
2
+
3
+ ---
4
+
5
+ 質問を読み誤っていたようなので追記します。
6
+
7
+
8
+
9
+ - 発生している問題
10
+
11
+ 発生している問題は、おそらくHTTPレスポンスヘッダが正常に出力されていないか、HTTPレスポンスヘッダ出力の前に何らかの出力(例えばエラーメッセージなど)があるため
12
+
13
+ ```PHP
14
+
15
+ header('Content-Type: application/octet-stream');
16
+
17
+ header("Content-Disposition: attachment; filename={$file_name}");
18
+
19
+ header('Content-Transfer-Encoding: binary');
20
+
21
+ ```
22
+
23
+ で出力しているHTTPレスポンスヘッダが正常に動作していない
24
+
25
+ と思われます。
26
+
27
+
28
+
29
+ - 出力の確認
30
+
31
+ 1. 開発者ツール(F12)でHTTPレスポンスヘッダを確認し、成功時と失敗時の差を比較する
32
+
33
+ 2. 失敗した時に右クリック→ソースを表示でHTMLソースを表示して先頭の方にエラー等が表示されていないか確認する(文字化けしている時は文字コードを変えて確認してみる)
34
+
35
+ 3. attercopさんの回答にある`header()を先頭に持ってくる`を試してみる(その場合、エラーメッセージ交じりのCSVがダウンロードできるはず)
36
+
37
+
38
+
39
+ - 解決方法
40
+
41
+ エラーメッセージが出ているのであれば、その原因を修正する
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+ 以下、追記前の回答
50
+
51
+ ---
52
+
53
+
54
+
1
55
  データの流れを一つずつデバッグしていくしか無いですが、
2
56
 
3
57