- ベストアンサー
contenttypeについて
ブラウザにてmultipart/form-dataを使用してファイルアップロード処理をサーバ側で行っているのですが、csvファイル(拡張子csv)はcontenttypeがapplication/octet-streamとなります。 これをtext/plainとしたい場合どうすればよいのでしょうか?そもそも何を持ってcontenttypeって判定されているのでしょうか? ※もちろん、対象ファイルの拡張子をtxtに変えればtext/plainにはなりますが・・・
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>クライアントの設定によるということなのでしょうか? アップロード時のcontent-typeはサーバにpostする時にブラウザがpostデータに入れてくるのでPC側での設定です。 アップロードならpostデータの中にローカルのファイル名も一緒に送られてきますから、そこから拡張子を抜き出して判定してはどうでしょうか?(macで拡張子が付いてない場合はどうすればいいかわかりませんが) サーバで実行する言語に合わせた場所で質問すればperlならモジュールとか、なんか便利な方法がわかるかも。
その他の回答 (2)
- steel_gray
- ベストアンサー率66% (1052/1578)
質問通りPC(ローカルファイル)→サーバ時の話なら、 それはOS(ブラウザによっては独自のファイルを持ってる場合も?)の設定でWindowsならレジストリに設定されていて、拡張子との関連付けとかそのあたりで変更できたと思います。かなり自信ないですが。 CSVファイルのContent-typeがapplication/octet-streamでどういった問題が出ているかわかれば対策もあるかもしれませんね。
補足
Content-typeはサーバ側が判定するものではなく、クライアントの設定によるということなのでしょうか?こちらがcsvをtext/plainで判定したいのは、application/octet-streamだと他の拡張子exeとかも許容するような仕組みになってしまうのを避けたいのです・・・。 でもクライアントの設定によってcontent-typeが決定してしまうというのであればどうしようもないですね・・・。 No.1さんのようにサーバ側で強制的にできないのかなぁ・・・。
- pipipi523
- ベストアンサー率40% (148/365)
ファイルのダウンロードの話でしょうか? Apacheであれば、.htaccessの設定で変えられます(設定にもよりますが) cvsのあるフォルダに.htaccessを作って中身を、 AddType text/plain .cvs とします。 参考 http://scrum.fuzoku.u-toyama.ac.jp/manual/mod/mod_mime.html http://www.shtml.jp/htaccess/mime.html
お礼
やっぱりクライアント側に依存しているんですね~。 csvファイルってExcelインストール有無でtext/plain、application/octet-streamになってしまうようなので、やはりファイル名の拡張子で判断するしかないですかね~(根本解決ではないですが・・・)