2010-11-20 2 views
3

TL; DR은 : 질문은 :도서관 크로스 플랫폼을위한 MIME 타입의 매핑 확장을 제기하고 그 반대의 경우도 마찬가지

  • 당신은 내가 C에서 사용할 수있는 크로스 플랫폼 라이브러리를 알고 있나요 ++ 매핑 할 MIME 종류 < -> 파일 확장자?

내 응용 프로그램은 모두 이미지와 비디오 파일을 처리 할 예정이다. 가능한 한 플랫폼에 독립적 인 사람이되기 위해 노력하고 있으므로 Qt4를 기본 라이브러리로 사용하기로했습니다. Phonon 프레임 워크 (비디오 파일 처리 용)와 QImage (이미지 처리 용)는 둘 다 지원하는 파일 형식을보고 할 수 있습니다. Phonon은 설치된 백엔드에서 지원되는 MIME 형식 목록을 반환하고 QImage는 지원되는 파일 형식을 파일 확장명 목록으로 나타냅니다.

응용 프로그램은 QString fileName에서 VideoObject 또는 ImageObject을 만들지 알아야합니다. 내 접근 방식은 올바른 개체를 만드는 데 적합한 팩토리 메서드를 반환하는 map<QString, FuncPtr>을 만드는 것입니다. 문자열의 경우 현재 파일 확장명을 사용합니다. 파일 이름에서 파일 확장명을 쉽게 추론 할 수 있기 때문입니다. 그러나 이제 MIME 형식 만 알기 때문에 지원되는 비디오 파일 형식을 등록하는 우아한 방법이 없습니다. 내 map<QString, FuncPtr>의 키에 대한 MIME 유형을 사용하는 경우

, 나는 문제에 직면하게 될 것입니다 방법

  • a)는 MIME 타입에 파일 이름 (어떻게 플랫폼을 수행하는 단서를 매핑 MIME 유형에 QImage에서 제공하는 독립적으로 확장 가능)
  • b)는지도 파일 확장자는

나는 내 연구 업에 따라 지금, 많은 사람들이 "아파치 mime.types 파일"을 사용하는 것이 좋습니다 것을 알고있다 , 어떤 새로운 파일을 지원하지 못하게 할 것인가? mats (WebM, WebP, ...)를 사용하여 클라이언트가 백엔드를 업데이트 할 때 사용합니다.

내가 찾은 다른 제안은 Linux에서 "/etc/mime.types"를 스캔하거나 Windows에서 "레지스트리를 쿼리"하는 것입니다 (단서 없음). 하지만이 두 플랫폼, Mac OS X의 경우에는 매우 제한적으로 보입니다.

위의 질문에 추가하여 어떤 형태 나 형태로든 다른 제안을 환영합니다. 아마도 나는 뇌가 죽은 것 같은 것을 놓치고 있습니다.

답변

4

귀하가 이미 귀하의 질문에 쓴 것처럼, 나는 아파치 또는 일부 리눅스 배포판에서 mimefile을 찾아 응용 프로그램과 함께 제공 할 것입니다.

개인적으로 "영구적으로 최신 상태로 유지"하기위한 "라이브러리"가 필요 없다고 생각합니다.

지난 몇 년 동안 MIME은 커졌지만 실제로는 정의 된 모든 MIME 유형 중 1 % 만 필요합니다. 사람들은 모든 종류의 파일 형식을 가지고 있지 않습니다.

일부를 검색하려면 IANA의 인기있는 MIME 유형 목록이 가장 많습니다.

TL : Apache 또는 일부 Linux 배포판에서 주로 mimefile으로 응용 프로그램을 제공하고 모든 대상 시스템에서 "라이브"로 읽는 것에 대해 걱정하지 마십시오.

관련 문제