iOS SwiftUI - PhotosPicker正在从选定文件获取mime类型

t5zmwmid  于 2023-01-12  发布在  Swift
关注(0)|答案(2)|浏览(158)

我正在使用此代码使用PhotosPicker挑选视频或图像:

PhotosPicker(
    selection: $selectedItem,
    matching: matching: .any(of: [.images, .videos]),
    photoLibrary: .shared()) {
        Text("edit")
            .padding(.horizontal, 18)
            .padding(.vertical, 2)
            .background(Color.black.opacity(0.5))
            .cornerRadius(12)
    }
    .onChange(of: selectedItem) { newItem in
        Task {
            if let data = try? await newItem?.loadTransferable(type: Data.self) {
                selectedFileData = data
                // mimeType = ???
                          
            }
        }
    }

如何从所选文件中找到mime类型?我知道如何在获得所选文件的路径/url时获得mime类型,但我也不知道如何使用PhotosPicker获得mime类型

yzxexxkh

yzxexxkh1#

在同一个问题上挣扎。
看起来我们可以从PhotosPickerItem访问var supportedContentTypes: [UTType] { get }
项支持的内容类型,按首选项到最不首选项的顺序排列。
https://developer.apple.com/documentation/photokit/photospickeritem/4022920-supportedcontenttypes

item.supportedContentTypes.first?.preferredMIMEType // Optional("image/jpeg")

我想总比什么都没有好。

fjaof16o

fjaof16o2#

通过将引用URL路径传递给此方法,您可以获得所选的图像或视频MIME类型

func mimeTypeForPath(path: String) -> String {
  let url = NSURL(fileURLWithPath: path)
  let pathExtension = url.pathExtension

  if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension! as NSString, nil)?.takeRetainedValue() {
     if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
            return mimetype as String
     }
  }
    return "image/png"
}

希望能帮到你...

相关问题