gpt4 book ai didi

ios - 从 NSData 确定 MIME 类型?

转载 作者:IT王子 更新时间:2023-10-29 08:00:15 29 4
gpt4 key购买 nike

如何确定 NSData 对象的 MIME 类型?我计划让用户从他们的 iPhone 上传视频/图片,并将该文件包装在 NSData 类中。

我想知道我是否可以从 NSData 中分辨出 mime 类型。这个问题只有几个答案,最近的一个是 2010 年(4 年前!)。谢谢!

NSData *data; // can be an image or video
NSString *mimeType = [data getMimetype]; // how would I implement getMimeType

最佳答案

基于 ml's answer from a similar post ,我为 NSData 添加了 mime 类型确定:

目标:

+ (NSString *)mimeTypeForData:(NSData *)data {
uint8_t c;
[data getBytes:&c length:1];

switch (c) {
case 0xFF:
return @"image/jpeg";
break;
case 0x89:
return @"image/png";
break;
case 0x47:
return @"image/gif";
break;
case 0x49:
case 0x4D:
return @"image/tiff";
break;
case 0x25:
return @"application/pdf";
break;
case 0xD0:
return @"application/vnd";
break;
case 0x46:
return @"text/plain";
break;
default:
return @"application/octet-stream";
}
return nil;
}

swift :

static func mimeType(for data: Data) -> String {

var b: UInt8 = 0
data.copyBytes(to: &b, count: 1)

switch b {
case 0xFF:
return "image/jpeg"
case 0x89:
return "image/png"
case 0x47:
return "image/gif"
case 0x4D, 0x49:
return "image/tiff"
case 0x25:
return "application/pdf"
case 0xD0:
return "application/vnd"
case 0x46:
return "text/plain"
default:
return "application/octet-stream"
}
}

这只处理主要文件类型,但您可以根据需要完成它:所有文件签名都可用 here , 只需使用与我相同的模式即可。

PS:对应的mime类型都有here

关于ios - 从 NSData 确定 MIME 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21789770/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com