- - PR -
拡張子以外でファイルのタイプを判別するには?
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-05-13 16:03
ファイルのアップロードをしようと思いますが、拡張子以外でファイルのMIMEを調べる方法を探しています。
アップロードはorg.apache.commons.fileuploadのAPIを使用しています。このパッケージ内のクラスで出来れば嬉しいのですが、Docを見渡したんですけど自分では見つけることができませんでした。 方法はなんでもよいので、返信お願いします。 |
|
投稿日時: 2005-05-13 17:11
リクエストヘッダにコンテントタイプが記載されていないでしょうか?
データそのものを見て判別するのは難しいかと思います。 たとえば CSV/HTML/XML 等のファイルは text/plain との区別ができないですよね。 |
|
投稿日時: 2005-05-13 17:22
返信ありがとうございます。とりあえずJAFでやることにしました。
http://java.sun.com/products/javabeans/glasgow/jaf.html import javax.activation.MimetypesFileTypeMap; import java.io.File; class GetMimeType { public static void main(String [] args) { File file = new File("hoge.jpeg"); System.out.println(new MimetypesFileTypeMap().getContentType(file)); } } このパッケージを導入すれば二行で出来て手っ取り早いです。コアパッケージでやりたかったのですが・・・。 |
|
投稿日時: 2005-05-13 17:43
おぉ、すばらしい。
簡単に利用できるAPIで良いですね。 |
|
投稿日時: 2005-05-13 20:04
ヒロシマケンさんの方法だと、拡張子で判断しているっぽいです。
試しに、gifファイルをjpegに拡張子を変更したら、 image/jpegで帰ってきました。 他の拡張子でも試しましたが、恐らく拡張子で判断しています。 そのマッピング情報を保持しているのが、 activation.jar/META-INF/mimetypes.defaultだと思います。 ちなみに以前使った事があるのですが、 java.net.URLConnection#guessContentTypeFromStream(java.io.InputStream) というのが使えると思います。 ソースを参照されるとわかると思いますが、ファイルヘッダを直接参照しています。 ただし、対応しているファイルタイプが少ないので、 がっかりするかもしれません。 |
|
投稿日時: 2005-05-14 01:32
WINEX32.DLL というライブラリでは中身を少し読み込んで判別しているようですね。
http://www.55555.to/ JNI で Java からでも使えませんかね。 |
1