我正在使用PhotosPicker庫選擇圖像或視頻并將其放入數據:
@State private var selectedImageData: Data? = nil
我需要弄清楚到底選了什么。
我找到的所有答案都是關于如何使用路徑從文件中檢索迷因類型,但我沒有使用PhotosPicker獲取文件路徑。
我在某處找到了這個:
extension Data {
private static let mimeTypeSignatures: [UInt8 : String] = [
0xFF : "image/jpeg",
0x89 : "image/png",
0x47 : "image/gif",
0x49 : "image/tiff",
0x4D : "image/tiff",
0x25 : "application/pdf",
0xD0 : "application/vnd",
0x46 : "text/plain",
]
var mimeType: String {
var c: UInt8 = 0
copyBytes(to: &c, count: 1)
return Data.mimeTypeSignatures[c] ?? "application/octet-stream"
}
}
它可以工作,但它是不完整的,我還需要mp4、mov和盡可能多的
例如,對帶有“mime類型十六進制簽名”的Google進行快速研究,可以得到這個或這個。。。
EDIT
代碼中的簽名數組讀取文件數據的第一個字節以確定其類型。
下面是我所說的示例代碼:
它將數據的前10個字節轉換為一個數組,然后檢查每個MIME類型(如果數組以MIME類型字節開頭)。(如果MIME簽名長度超過10字節,則需要超過10字節)。