質問編集履歴

5

バージョン情報追加

2019/12/09 09:05

投稿

Rebecca
Rebecca

スコア11

test CHANGED
File without changes
test CHANGED
@@ -102,7 +102,9 @@
102
102
 
103
103
 
104
104
 
105
- Mac OS
105
+ Mac OS Mojave バージョン 10.14.6
106
+
107
+ Safari バージョン13.0.3
106
108
 
107
109
  Vagrant + CentOS6.x
108
110
 

4

やってみたこと追記

2019/12/09 09:05

投稿

Rebecca
Rebecca

スコア11

test CHANGED
File without changes
test CHANGED
@@ -107,3 +107,41 @@
107
107
  Vagrant + CentOS6.x
108
108
 
109
109
  cakePHP2.x
110
+
111
+
112
+
113
+ ### 追記 PHPでやってみました
114
+
115
+ ``` PHP
116
+
117
+ <?php
118
+
119
+ $file_path = [サーバ上のディレクトリ/ファイル名];;
120
+
121
+ $file_name = 'ほげほげ.docx';
122
+
123
+
124
+
125
+ // HTTPヘッダ設定
126
+
127
+ header('Content-Type: application/octet-stream');
128
+
129
+ header('Content-Length: '. filesize($file_path));
130
+
131
+ //header('Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode($file_path));
132
+
133
+ //ダウンロードの指示・ダウンロード時のファイル名を指定
134
+
135
+ header('Content-Disposition: attachment; filename="'.$file_name.'"');
136
+
137
+
138
+
139
+ // ファイル出力
140
+
141
+ readfile($file_name);
142
+
143
+ ?>
144
+
145
+ ```
146
+
147
+ ファイル「ほげほげ.docx」がダウンロードされ、 MS Wordで開くことができました。

3

変数設定値の追加

2019/11/26 01:45

投稿

Rebecca
Rebecca

スコア11

test CHANGED
File without changes
test CHANGED
@@ -40,6 +40,12 @@
40
40
 
41
41
  ```cakePHP
42
42
 
43
+ $file_path = [サーバ上のディレクトリ/ファイル名];
44
+
45
+ $file_name = 'ほげほげ.docx';
46
+
47
+
48
+
43
49
  //ダウンロード処理
44
50
 
45
51
  $headers = [
@@ -56,6 +62,8 @@
56
62
 
57
63
  $this->response->file($file_path, array('download' => true));
58
64
 
65
+ // $file_pathのファイル名をダウンロードファイル名にしてダウンロード
66
+
59
67
  $this->response->download($file_name);
60
68
 
61
69
  ```
@@ -65,6 +73,10 @@
65
73
  ### 以下、やってみたこと
66
74
 
67
75
  ```cakePHP
76
+
77
+ $file_path = [サーバ上のディレクトリ/ファイル名];
78
+
79
+ $file_name = 'ほげほげ.docx';
68
80
 
69
81
  $this->response->header('Content-Type: application/octet-stream');
70
82
 
@@ -77,6 +89,8 @@
77
89
  $this->response->header('Content-Disposition:', $content);
78
90
 
79
91
  $this->response->file($file_path);
92
+
93
+ // $file_pathのファイル名をダウンロードファイル名にしてダウンロード
80
94
 
81
95
  $this->response->download($file_name);
82
96
 

2

やってみたことの追加

2019/11/25 09:29

投稿

Rebecca
Rebecca

スコア11

test CHANGED
File without changes
test CHANGED
@@ -28,13 +28,13 @@
28
28
 
29
29
 
30
30
 
31
- SafariでもChromeと同様にファイルをダウンロードできでしょうか?
31
+ SafariでもChromeと同様にファイルをダウンロードできないでしょうか?
32
32
 
33
33
  ご教唆ください。
34
34
 
35
35
 
36
36
 
37
- ### 以下、やってみた現状のソースです。
37
+ ### 以下、現状のソースです。
38
38
 
39
39
 
40
40
 
@@ -62,6 +62,28 @@
62
62
 
63
63
 
64
64
 
65
+ ### 以下、やってみたこと
66
+
67
+ ```cakePHP
68
+
69
+ $this->response->header('Content-Type: application/octet-stream');
70
+
71
+ $content = 'attachment;';
72
+
73
+ $content .= 'filename='.$file_name;
74
+
75
+ $content .= ' filename*=UTF-8\'\''.rawurlencode($file_name);
76
+
77
+ $this->response->header('Content-Disposition:', $content);
78
+
79
+ $this->response->file($file_path);
80
+
81
+ $this->response->download($file_name);
82
+
83
+ ```
84
+
85
+
86
+
65
87
  ### 補足情報(FW/ツールのバージョンなど)
66
88
 
67
89
 

1

更新漏れによる再記載

2019/11/25 08:27

投稿

Rebecca
Rebecca

スコア11

test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,14 @@
1
+ 更新失敗していたようで、失礼しました。再度記載し直します。
2
+
3
+
4
+
1
5
  cakePHP 2.xで開発中です。
2
6
 
3
7
 
4
8
 
5
9
  アップロードしたファイルをダウンロードする機能があり、Safariでダウンロードすると、ファイル名最後に[.html]が追加されてしまいます。
10
+
11
+
6
12
 
7
13
  例えば、アップロードしたMS Wordファイル「xxx.docx」をダウンロードすると
8
14
 
@@ -11,3 +17,57 @@
11
17
 
12
18
 
13
19
  ファイル名から[.html]を削除するとMS Wordファイルとして開くことができます。
20
+
21
+ Chromeでは、正常に「xxx.docx」がダウンロードできます。
22
+
23
+
24
+
25
+
26
+
27
+ ### 前提・実現したいこと
28
+
29
+
30
+
31
+ SafariでもChromeと同様にファイルをダウンロードできるでしょうか?
32
+
33
+ ご教唆ください。
34
+
35
+
36
+
37
+ ### 以下、やってみた現状のソースです。
38
+
39
+
40
+
41
+ ```cakePHP
42
+
43
+ //ダウンロード処理
44
+
45
+ $headers = [
46
+
47
+ 'Content-Type: application/octet-stream',
48
+
49
+ 'Content-Disposition: attachment; filename="'.$file_name.'"',
50
+
51
+ 'Content-Length' => filesize($file_path)
52
+
53
+ ];
54
+
55
+ $this->response->header($headers);
56
+
57
+ $this->response->file($file_path, array('download' => true));
58
+
59
+ $this->response->download($file_name);
60
+
61
+ ```
62
+
63
+
64
+
65
+ ### 補足情報(FW/ツールのバージョンなど)
66
+
67
+
68
+
69
+ Mac OS
70
+
71
+ Vagrant + CentOS6.x
72
+
73
+ cakePHP2.x