2016-08-24 9 views
1

호출자가 PDF, JPG, PNG 또는 BMP 파일을 업로드 할 수있는 메소드를 제공하는 SOAP-WebService가 있습니다. 올바른 처리를 위해 DataHandler에서 MIME-Type을 가져와야합니다.DataHandler에서 MIME 유형 감지

Tika tika = new Tika(); 
InputStream stream = dataHandler.getInputStream(); 
String mimeType = tika.detect(stream); 

이제 내 문제는 :

대부분의 시간 티카 올바른 MIME-유형을 감지하지만 업로드 JPG를 몇 가지 경우가 plain/text 대신 감지 나는 아파치 티카와 MIME 타입을 얻기 위해 노력 image/jpeg. 이 문제를 어떻게 해결할 수 있습니까?

미리 감사드립니다.

+0

어떤 버전의 Apapche Tika를 사용하십니까? 업그레이드하면 어떻게됩니까? 오, 파일 이름을 가지고 있습니까? Tika는 파일명을 너무 잘 추측 할 수 있습니다. – Gagravarr

+0

현재 버전 1.13이 있습니다. 불행히도 파일 이름이 없기 때문에 MIME-Type이 필요한 이유가 있습니다. – VenoxX

+0

유효한 jpeg 파일을 텍스트로 감지해서는 안됩니다. 최근 야간 빌드에서 동일한 문제가 발생한다고 가정하면 새로운 Tika 버그를 열고 문제를 보여주는 파일을 업로드 할 수 있습니까? – Gagravarr

답변

1

나는 티카가 무엇이 잘못 되었는가를 알지 못하지만 대안으로 당신은 쉽게 같은 것을 구성하고 쉽게 구성 할 수있는 유연성이 더 좋은 MimeUtil을 시도 할 수 있습니다. 클래스 MimeUtilhere에 대한

// Define the mime type detector to use, here it will be MagicMimeMimeDetector 
// As you intend to detect from a Stream 
// To be done only once in a static block of your class for example  
MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.MagicMimeMimeDetector"); 
... 
// Get the collection of matching mime types 
Collection<?> mimeTypes = MimeUtil.getMimeTypes(stream); 

자세한 내용.

+0

감사합니다. MimeUtil을 사용해 보았는데 정말 잘 돌아갔습니다. – VenoxX