2013-01-19 43 views
0

幾年前,有一種觀點認爲,$ _FILES [$ file] ['type']包含從瀏覽器發送的mimetype,但不是真正的mimetype,例如這裏:

http://php.net/manual/ru/reserved.variables.files.php#109902

是否仍然如此?我還需要使用的FileInfo擴展檢測MIME類型? (我正在使用php5.4)

+0

根據您所期望的文件類型,可能不需要安裝擴展。您希望能夠檢測到什麼? – rid

回答

1

是的,type填充了瀏覽器提供的數據。

從手冊頁約POST method uploads

$ _FILES [ 'userfile的'] [ '型']

的MIME類型的文件,如果瀏覽器提供了這個信息。一個例子是「image/gif」。然而,這種MIME類型在PHP方面沒有被檢查,因此不會將其值視爲理所當然。

1

是的,情況依然如此。 type是客戶端提供的MIME信息。

1

我總是使用fileinfo來做到這一點,但是如果你使用閃存上傳器,你可能會發現幾乎所有上傳閃存上傳器的文件都被檢測爲application/octet-stream

因爲這......我也有一個「從擴展模式檢測」的方法,如果文件被fileinfo檢測爲application/octet-stream,它會檢查它的擴展名並嘗試確定真實的文件類型。

+1

但是,如果你已經使用fileinfo,你爲什麼關心擴展? – rid

+0

因爲Flash播放器通常會更改文件標題......並且無法檢測MIME類型。它總是返回'application/octet-stream'。所以我需要從擴展中獲取內容類型(我重複......僅當它被檢測爲「application/octet-stream」時)。 – elboletaire

+1

除非Flash修改文件本身,否則fileinfo應該能夠檢測到它。這個想法是檢測文件的*內容*,而不是瀏覽器*說的*它是什麼。 – rid