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의 경우에는 매우 제한적으로 보입니다.
위의 질문에 추가하여 어떤 형태 나 형태로든 다른 제안을 환영합니다. 아마도 나는 뇌가 죽은 것 같은 것을 놓치고 있습니다.