やりたいこと
ファイル名からMIMEタイプを生成したい時がある。例えば、
- "image.png" ->
image/png
- "movie.mov" ->
video/quicktime
という感じ。
実装方法
Uniform Type Identifiers を利用する。そのため、iOS 14以降じゃないと使えない。
上述したPNG画像の場合はこんな感じ。
import UniformTypeIdentifiers let url = URL(string: "file://path/to/image.png")! let mimeType = UTType(filenameExtension: url.pathExtension)!.preferredMIMEType! print(mimeType) // => "image/png"
動画も同じ感じで使える。
import UniformTypeIdentifiers let url = URL(string: "file://path/to/movie.mov")! let mimeType = UTType(filenameExtension: url.pathExtension)!.preferredMIMEType! print(mimeType) // => "video/quicktime"
URLではなく、NSStringでも同様のことができる。Stringはそのままだと使えないので、一旦NSStringに変換することになる。
import UniformTypeIdentifiers let nsString = NSString(string: "video.mov") let mimeType = UTType(filenameExtension: nsString.pathExtension)!.preferredMIMEType! print(mimeType) // => "video/quicktime"
備考
当然だが、これはファイル名(の拡張子)からMIMEタイプに変換している。実際にファイルの中身を検査している訳ではないため、拡張子がついていなかったり拡張子が信用できない場合には利用できない。