幾年前,有一種觀點認爲,$ _FILES [$ file] ['type']包含從瀏覽器發送的mimetype,但不是真正的mimetype,例如這裏:
http://php.net/manual/ru/reserved.variables.files.php#109902
是否仍然如此?我還需要使用的FileInfo擴展檢測MIME類型? (我正在使用php5.4)
幾年前,有一種觀點認爲,$ _FILES [$ file] ['type']包含從瀏覽器發送的mimetype,但不是真正的mimetype,例如這裏:
http://php.net/manual/ru/reserved.variables.files.php#109902
是否仍然如此?我還需要使用的FileInfo擴展檢測MIME類型? (我正在使用php5.4)
是的,type
填充了瀏覽器提供的數據。
從手冊頁約POST method uploads:
$ _FILES [ 'userfile的'] [ '型']
的MIME類型的文件,如果瀏覽器提供了這個信息。一個例子是「image/gif」。然而,這種MIME類型在PHP方面沒有被檢查,因此不會將其值視爲理所當然。
是的,情況依然如此。 type
是客戶端提供的MIME信息。
我總是使用fileinfo來做到這一點,但是如果你使用閃存上傳器,你可能會發現幾乎所有上傳閃存上傳器的文件都被檢測爲application/octet-stream
。
因爲這......我也有一個「從擴展模式檢測」的方法,如果文件被fileinfo檢測爲application/octet-stream
,它會檢查它的擴展名並嘗試確定真實的文件類型。
但是,如果你已經使用fileinfo,你爲什麼關心擴展? – rid
因爲Flash播放器通常會更改文件標題......並且無法檢測MIME類型。它總是返回'application/octet-stream'。所以我需要從擴展中獲取內容類型(我重複......僅當它被檢測爲「application/octet-stream」時)。 – elboletaire
除非Flash修改文件本身,否則fileinfo應該能夠檢測到它。這個想法是檢測文件的*內容*,而不是瀏覽器*說的*它是什麼。 – rid
根據您所期望的文件類型,可能不需要安裝擴展。您希望能夠檢測到什麼? – rid