質問編集履歴

1

追記

2015/12/21 08:28

投稿

ssmxgo
ssmxgo

スコア178

test CHANGED
@@ -1 +1 @@
1
- XLSファイルのアップロードが出来ない
1
+ XLSファイル(によっては)のアップロードが出来ない
test CHANGED
@@ -6,6 +6,94 @@
6
6
 
7
7
 
8
8
 
9
+ **<追記>**
10
+
11
+ 先に記述スべきだったのですが、$_FILESをダンプした所
12
+
13
+ ```php
14
+
15
+ array(1) {
16
+
17
+ ["userfile"]=>
18
+
19
+ array(5) {
20
+
21
+ ["name"]=>
22
+
23
+ string(16) "filename.xls"
24
+
25
+ ["type"]=>
26
+
27
+ string(24) "application/vnd.ms-excel"
28
+
29
+ ["tmp_name"]=>
30
+
31
+ string(14) "/tmp/phpVvCVSo"
32
+
33
+ ["error"]=>
34
+
35
+ int(0)
36
+
37
+ ["size"]=>
38
+
39
+ int(1910784)
40
+
41
+ }
42
+
43
+ }
44
+
45
+ ```
46
+
47
+ でしたが、[こちら](https://colo-ri.jp/develop/2011/04/uploader-fileformat-detection.html)を確認したところ、$_FILESのMIMEは信じてはならないとのことで、
48
+
49
+ Linuxコマンドから確認したところ、
50
+
51
+ ```php
52
+
53
+ <?php
54
+
55
+ $path = $_FILES['myfile']['tmp_name'];
56
+
57
+ $mime = shell_exec('file -bi '.escapeshellcmd($path));
58
+
59
+ $mime = trim($mime);
60
+
61
+ $mime = preg_replace("/ [^ ]*/", "", $mime);
62
+
63
+ print($mime);
64
+
65
+ ?>
66
+
67
+ ```
68
+
69
+ なんと、
70
+
71
+ `application/CDFV2-encrypted; charset=binary`
72
+
73
+
74
+
75
+ なるものが返ってきました。もしや?
76
+
77
+ と思い、LibreOfficeやNumberでxlsファイルを出力すると
78
+
79
+ それぞれ返されるMimeTypeは異なりましたが、いずれもExcel絡みのTypeで正しくアップロード出来ました。
80
+
81
+
82
+
83
+ ところが、今回振り回されたxlsファイルは PHPExcel というLibraryにより出力されたファイルで何かが違うようです。
84
+
85
+
86
+
87
+ 現段階では、`CDFV2-encrypted;` これをアップするにはどうすればよいか、という問題に集約されている状況です。
88
+
89
+
90
+
91
+
92
+
93
+ ---
94
+
95
+ **<本文>**
96
+
9
97
  公式マニュアルに基づき、ファイルアップローダー?を作りました。
10
98
 
11
99
  http://codeigniter.jp/user_guide_ja/libraries/file_uploading.html