Webアプリで Excel,Word,PowerPoint,csvをアップロード、ファイル判定

する方法はありますか?

レンタル共有サーバ上でWebアプリを作成していますが、
<form method='post' .... enctype="multipart/form-data">で、
アップロードするものと思っております。

ファイルをアップロードした次の処理で、どのMIME TYPEかを判定する
$_FILE['myfile']['type'] の方法があると思います。
しかし、上記 4種類の拡張子ファイルをアップロードしたとき、すべて
'application/octet-stream' となってしまった為、
PHP関数 mime_content_type を使いました。結果は↓になりました。

.xls = application/vnd.ms-excel
.ppt = application/vnd.ms-office
.doc = application/msword
.csv = text/plain

.csvだけ、期待はずれでした。
.csvだった場合、'text/comma-separated-values' と判定させるには
どうしたらよいでしょうか?

また、参考サイトをご教示いただけると有難いです。
.htaccess は使える環境です。

LAMP仕様は、
Apache/1.3.41
PHP/5.3.6
MySQL/5.5.14
FreeBSD/8.2

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:
  • 終了:2012/12/19 23:40:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:oil999 No.1

回答回数1728ベストアンサー獲得回数320

ポイント67pt

PHPの問題ではなく、Apacheのmime-typeが

text/csv    csv

となっているためです。

mime-typeを定義している "(Apacheをインストールしたフォルダ)\Apache\conf\mime.types" を編集し、

text/comma-separated-values    csv

と書き換えてください。

なお、".htaccess" に以下の記述を追加することでも実現できます。

AddType  text/comma-separated-values  csv


MIMEタイプの追加(AddType)

http://www.adminweb.jp/apache/docroot/index4.html

id:gdwtseq

ありがとうございます。
しかし、.htaccess に上記を書いたのですが、
mime_content_type関数の結果は、text/plain から変わらないです。


ただ、不思議なことに昨日パソコンにマイクロソフトOffice試用版を
インストールしたんですが、それ以降$_FILES['type']が
.xls --> application/vnd.ms-excel
.doc --> application/msword
.ppt --> application/vnd.ms-powerpoint
.csv --> application/vnd.ms-excel

に変化しました。
.csv が text/comma-separated-values になったらよかったのですが。。

2012/12/14 11:06:53
id:zzman No.2

回答回数299ベストアンサー獲得回数38

ポイント67pt

レジストリの設定が効いているのだと推察されます。

HKEY_CLASSES_ROOT\.csv\Content Type

上記のキーの値を application/vnd.ms-excel から text/comma-separated-values に変更して実施してみるとよろしいと存じます。

http://php.net/manual/ja/function.mime-content-type.php

id:boost_beast No.3

回答回数785ベストアンサー獲得回数31

ポイント66pt

http://specialspringjoe.blogspot.jp/2010/09/webexcel.html
こちらが参考になるでしょうか?

違ってたらすいません。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません