• ベストアンサー

contenttypeについて

ブラウザにてmultipart/form-dataを使用してファイルアップロード処理をサーバ側で行っているのですが、csvファイル(拡張子csv)はcontenttypeがapplication/octet-streamとなります。 これをtext/plainとしたい場合どうすればよいのでしょうか?そもそも何を持ってcontenttypeって判定されているのでしょうか? ※もちろん、対象ファイルの拡張子をtxtに変えればtext/plainにはなりますが・・・

質問者が選んだベストアンサー

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.3

>クライアントの設定によるということなのでしょうか? アップロード時のcontent-typeはサーバにpostする時にブラウザがpostデータに入れてくるのでPC側での設定です。 アップロードならpostデータの中にローカルのファイル名も一緒に送られてきますから、そこから拡張子を抜き出して判定してはどうでしょうか?(macで拡張子が付いてない場合はどうすればいいかわかりませんが) サーバで実行する言語に合わせた場所で質問すればperlならモジュールとか、なんか便利な方法がわかるかも。

sting
質問者

お礼

やっぱりクライアント側に依存しているんですね~。 csvファイルってExcelインストール有無でtext/plain、application/octet-streamになってしまうようなので、やはりファイル名の拡張子で判断するしかないですかね~(根本解決ではないですが・・・)

その他の回答 (2)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

質問通りPC(ローカルファイル)→サーバ時の話なら、 それはOS(ブラウザによっては独自のファイルを持ってる場合も?)の設定でWindowsならレジストリに設定されていて、拡張子との関連付けとかそのあたりで変更できたと思います。かなり自信ないですが。 CSVファイルのContent-typeがapplication/octet-streamでどういった問題が出ているかわかれば対策もあるかもしれませんね。

参考URL:
http://www.chichibu.ne.jp/~kawahira/data/reglist.htm
sting
質問者

補足

Content-typeはサーバ側が判定するものではなく、クライアントの設定によるということなのでしょうか?こちらがcsvをtext/plainで判定したいのは、application/octet-streamだと他の拡張子exeとかも許容するような仕組みになってしまうのを避けたいのです・・・。 でもクライアントの設定によってcontent-typeが決定してしまうというのであればどうしようもないですね・・・。 No.1さんのようにサーバ側で強制的にできないのかなぁ・・・。

  • pipipi523
  • ベストアンサー率40% (148/365)
回答No.1

ファイルのダウンロードの話でしょうか? 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

関連するQ&A