Déterminer le type MIME à partir de NSData?
Comment voulez-vous déterminer le type mime pour une NSData objet? J'ai l'intention d'avoir à l'utilisateur de télécharger une vidéo/photo de l'iPhone et ce fichier sera enveloppé dans un NSData classe.
Je me demandais si je peux dire le type mime de la NSData. Il n'y a que peu de réponses à cette question, et la plus récente est à partir de 2010 (il y a 4 ans!). Merci!
NSData *data; //can be an image or video
NSString *mimeType = [data getMimetype]; //how would I implement getMimeType
source d'informationauteur blee908
Vous devez vous connecter pour publier un commentaire.
Basé sur ml de réponse à partir d'un poste similairej'ai ajouté les types mime détermination pour NSData:
Cette poignée principale uniquement les types de fichier, mais vous pouvez la réaliser: vous pouvez trouver tous les fichiers de signature iciil suffit d'utiliser le même schéma que j'ai fait.
PS: tous les types mime sont disponibles ici
❤️ Swift
Autant que je sache,
NSData
est un juste un objet de données qui encapsule un tableau d'octets:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSData_Class/Reference/Reference.html
...d'une façon que je peux penser si vous avez envie de découvrir son type MIME est d'inspecter les octets eux-mêmes et puis conjecturer le type à partir de là. Il y a un exemple ici: Trouver type d'image à partir de NSData ou UIImage
J'ai aussi trouvé ceci: Déterminer le Type MIME de la NSData Chargé à Partir d'un Fichier; qui se rapporte à une base de données interne (je suppose) qui peuvent être utilisés pour un type MIME.
Mais comme Tom Harrington dit dans sa réponse, il pourrait être difficile en fonction de ce que vous avez à traiter avec des.
Modifier...
Bien sûr, que la deuxième solution s'appuie sur l'extension de fichier, qui de toute évidence vous n'avez pas, mais je suis sûr que vous avez remarqué que déjà.
Puisque vous dites que vous êtes téléchargement ces données, vous devez déjà connaître le type MIME. Vous avez créé l'objet de données, vous connaissez la provenance des données, et il y a un nombre limité de types MIME. Afin d'utiliser celle qui convient à vos données. Pour une image, il est probablement
image/jpeg
ouimage/png
. Pour les vidéos il y a un tas devideo/
types. Vous pouvez trouver une longue liste de type MIME chaînes sur votre Mac dans/etc/apache2/mime.types
. Vous aurez envie d'un ou de plusieurs de ces en fonction du type de vidéo que vous avez.Déterminer le type MIME est un problème collant; un
NSData
peut encoder n'importe quel type de données binaires. La seule façon de déterminer ce qui a été codé est d'examiner les octets. Que signifie avoir une certaine compréhension de ce que l'octet de flux existent dans différents types de fichiers. Il devrait être possible d'utiliser une recherche dictionnaire dans de nombreux (mais pas tous) des cas, et il pourrait y avoir une implémentation open source quelque part pour les types de fichiers courants. Pour avoir une idée de ce que cela implique, essayezman file
sur votre Mac et consultez/usr/share/file/magic/
de voir comment les différents types de fichiers sont identifiés (lafile
commande ne permet pas de produire des types MIME, mais il n'a analyser le contenu du fichier pour identifier les types de fichiers, donc c'est le même principe).var values = [UInt8](répéter:0, count:imgData.le comte)
imgData.copyBytes (: &des valeurs, count:1)