'file --mime-type' ve 'mimetype' Komutları Farklı Sonuçlar Döndürüyor


9

Merhaba ben PHP neden 'excel' olması gerektiği zaman 'dosya' ve 'mimetype' komutlarını kullanarak benim Ubuntu kutusu üzerinde test var 'msword' dosya türü döndürüyor anlamaya çalışıyorum. Aşağıdaki sonuçlardan da görebileceğiniz gibi, farklı sonuçlar verir. Nedenini açıklayan var mı?

root@dev:~# file --mime-type 1.xls
1.xls: application/msword
root@dev:~# mimetype 1.xls
1.xls: application/vnd.ms-excel

Ayrıca söz konusu dosyanın bir Windows Server'da 'msword' döndürdüğünü de not etmeliyim. PHPExcel kullanılarak oluşturuldu.

Yardımın için teşekkürler.

Yanıtlar:


7

filesonuçlarını alır /etc/mime.types.

Buradan:

Uygulama / mathematica eski
Uygulama / ms-tnef
uygulama / msaccess mdb
uygulama / msword doc dot
uygulama / haber-ileti-id
uygulama / haber-transmisyon
Uygulama / OCSP istek
Uygulama / OCSP yanıt

mimetype onu alır ...

ENVIRONMENT

   XDG_DATA_HOME
   XDG_DATA_DIRS
       These variables can list base directories to search for data files.
       The shared mime-info will be expected in the "mime" sub directory
       of one of these directories. If these are not set, there will be
       searched for the following directories:

               $HOME/.local/share/mime
               /usr/local/share/mime
               /usr/share/mime

       See also the "XDG Base Directory Specification"
       http://freedesktop.org/Standards/basedir-spec
       <http://freedesktop.org/Standards/basedir-spec>

Mimetype için man sayfasında bu kısım dikkat çekicidir:

Adlandırma anahtarları için mümkünse dosya (1) sürüm 4.02'nin kılavuz sayfasını takip ettim. IEEE Std 1003.1-2001 (POSIX) 'yardımcı programlar' bölümündeki spesifikasyondan tamamen farklı görünüyorlar.

Bunu dosyaya hakkında hata diyebilirsiniz Yani /etc/mime.typesberi vnd.ms-exceldaha doğrudur.


Görünüşe göre hem Windows hem de Linux'ta sorunla karşılaştım. Açıklama için teşekkürler.
scampbell

evet ve düşünmek ... mimetype muhtemelen masaüstü sadece bir sunucu ile uğraşırken dosya kullanacaksınız.
Rinzwind

12.04'deyim ve düzenleme /etc/mime.typessonuçları görünmüyor gibi görünüyor file.
congusbongus

5

.debPaketler için iki araç arasında benzer bir fark vardır .

Bu görünen bu dosya kullanımlarını /etc/mime.typesve mimetypedaha bir çok karmaşık lapa kullanır XDG_DATA_DIRS(dan man mimetypes):

ENVIRONMENT
       XDG_DATA_HOME
       XDG_DATA_DIRS
           These variables can list base directories to search for data files. The shared mime-info will be expected in the "mime" sub directory of one of these directories. If these are not set,
           there will be searched for the following directories:

                   $HOME/.local/share/mime
                   /usr/local/share/mime
                   /usr/share/mime

           See also the "XDG Base Directory Specification" http://freedesktop.org/Standards/basedir-spec <http://freedesktop.org/Standards/basedir-spec>

FILES
       The base dir for all data files is determined by two environment variables, see "ENVIRONMENT".

       BASE/mime/packages/SOURCE.xml
           All other files are compiled from these source files. To re-compile them use update-mime-database(1).

       BASE/mime/globs
           Compiled information about globs.

       BASE/mime/magic
           Compiled information about magic numbers.

       BASE/mime/MEDIA/SUBTYPE.xml
           Descriptions of a mimetype in multiple languages, used for the "--describe" switch.

Görünüşe göre hem Windows hem de Linux'ta sorunla karşılaştım. Açıklama için teşekkürler. Özür dilerim 2'yi anwser olarak işaretleyemem. Her ikisi de spot on.
scampbell

1

Onu bulmam biraz zaman aldı, ama debian'a mimetype yükleyebildim.

sudo apt-get install libfile-mimeinfo-perl

Şimdi application/vnd.ms-excelbunun yerine .xls alıyorum application/msword.


0

PHP ile yaptığınızı söylemiştiniz. Mime dosya türünü alırken bu tür farklarla karşılaştım. Farklılar. PHP'de düzgün bir şekilde yapmak için finfo kullanmalısınız

$finfo = new finfo();
$mime = $finfo->file($path_to_file, FILEINFO_MIME);

Teşekkürler zaten bu işlevi kullanıyorum. Yanlış biçimi döndürür. Bu yüzden test ediyordum.
scampbell

hangi biçime geri dönüyor?
llt

Orijinal soruya bakın
scampbell

Orada finfo kullandığından bahsetmedin. Msword döndürüyor mu?
llt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.