fileinfo ve ben duymadım mim tipleri

3 Cevap php

Ben mim türlerine yabancı değilim ama bu garip. Normalde, bir metin dosyası metin / düz mim olarak kabul olurdu ama şimdi, FileInfo uygulanmasından sonra, bu dosya türü artık "text / x-pascal" olarak kabul edilir. Ben kullanıcılar ile yüklemek için izin vermeden önce ayarlanmış doğru mime türlerini almak emin olmak gerekir çünkü ben biraz endişeliyim.

Onlar FileInfo tarafından yorumlandığı gibi bana "ortak" Pandomimcilerin tüm verecek bir hile levha var mı?


Sinan daha yaygın mimes listeleyen bir bağlantı sağlamıştır. Bu listede bakarsanız, bir. Txt dosyası metin / düz mim değildir ama benim durumumda, bir düz-jane metin dosyası metin / pascal olarak yorumlanır olduğunu göreceksiniz.

3 Cevap

fileinfo, bir "en iyi tahmin" dir. Bu dosya türü ne anlamaya denemek için dosyanın sadece bir kısmını analiz ve gibi kolayca yeterince aptal olabilir. Belki dosya, Project veya Unit gibi bir Pascal açıklama veya anahtar kelime ile başlar.

Fileinfo ki o mime-tipi belirlemek için dosya uzantısını kullanarak, ama (quoting) değil:

The functions in this module try to guess the content type and encoding of a file by looking for certain magic byte sequences at specific positions within the file.

Dosyaya bir ad, ve onun uzantısı, kullanıcılara (especially in a case such as yours, where the files are being uploaded by users) tarafından sağlanan, ve, gibi, dosyanın kendisi içeriğinden daha az "emin" olduğunu olma fikri.


Maybe a solution could be to not check on the whole mime-type returned by fileinfo, but to only use the first part of it -- at least in some cases ?

For instance, maybe you could accept all mimetype that are in the text/* and image/* families, and refuse all those look like application/*, except for application/pdf ?
(Just an example -- but you see the point)

Ben en azından sürüm 5.03 olarak, 'file' komutu bazı durumlarda bu kelime 'programı' ya da içeriyor çünkü, bir Pascal kaynak dosyası olarak bir düz metin dosyası yanlış belirleyebilir, bulduk 'kayıt'. Yani en azından kaynağını (src / names.h) inceledikten sonra görünüyor nasıl. Ben komuta fileinfo php aynı 'sihirli' motorunu kullanır inanıyorum, bu yüzden bu sorunun nedeni olduğunu sanıyorum. / Ben dosya posta listesine kabul ettiğimde, ben bu konunun bakıcılarına bildirecektir.

[UPDATE] I asked the question, but got little in the way of a response. Having investigated this issue a bit more throughly, it turns out that identifying text formats is, in general, really difficult. If you get a 'text/*' MIME type back from file, you might want to consider ignoring the result and assuming the resource is just 'text/plain', unless the false negatives (text/html maybe) will cause you difficulties.