2009-05-28 53 views
0

我正在用PHP編寫一個對象,用於在FTP服務器上顯示文件。我使用內置的FTP函數來檢索我需要的大部分細節(文件名,大小,上次修改等)。但是,沒有功能可以在服務器上獲取文件的MIME類型。我嘗試了兩種不同的方法,但我遇到了一些問題。通過FTP獲取MIME類型在PHP中

使用的FileInfo如下需要34秒獲得的10個文件的MIME類型:

$finfo = new finfo(FILEINFO_MIME); 
$mime_type = $finfo->file('ftp://username:[email protected]/path/file'); 

使用mime_content_type()做同樣的事僅僅花費6秒:

$mime_type = mime_content_type('ftp://username:[email protected]/path/file'); 

有這裏有兩個問題,我正在尋找一些幫助。首先是安全。使用任何一種方法都會將登錄憑據傳輸爲純文本(當然,FTP本質上是不安全的,但這會使情況變得更糟)。第二個問題更多的是最佳做法。很明顯,mime_content_type()是這兩種方法中最好的,因爲它表現得更好,但它已被棄用。有沒有更好的,可能更安全的方法呢?我不能在FTP服務器上安裝任何東西,因爲它打算在希望使用它的任何一臺FTP服務器上使用,所以使用Web服務是不可能的。

由於提前, 〜詹姆斯·阿姆斯

+0

確實需要獲取MIME類型嗎?在大多數情況下,查看文件擴展名就足夠了。它當然不是同樣可靠的,但是當你正在做實際的處理時,你仍然可以做一個MIME類型檢查。 – 2009-05-28 20:09:38

+0

我想要得到真正的mime類型。任何人都可以將位圖圖像更改爲jpeg擴展名,但它仍然是位圖圖像。文件擴展名也是可選的。儘管Windows可能不知道如何在沒有擴展名的情況下打開文件,但Linux很好(不確定Mac)。 – JamesArmes 2009-05-28 23:46:00

回答

3

的原因延遲是你需要閱讀每個文件的魔法字節,並使用你的服務器的魔力文件,以確定是什麼類型的。

因此,您正在FTP中打開一個傳輸並讀取該信息,這在FTP中並不那麼快。