網上有很多php文件上傳的類,文件上傳處理是php的一個特色(至少手冊上是將此作為php特點來展示的,個人認為php在數組方面的優異功能更有特色),學php的人都知道文件上傳怎麼做,但很多人在編程中卻可能忽視了一些細節問題,那就是文件的類型(MIME)。在表單將文件提交給php做處理之前,浏覽器會先解析識別一邊是什麼類型的文件,之後進入php處理環節,php又會去識別解析此文件的原始類型(並不是說你改成什麼後綴就是什麼文件)。在這個過程中會有一些浏覽器兼容,更准確來說是文件類型解析標識不一致的問題。這樣在php處理Post過來的文件類型時就需要根據不同浏覽器做更多的判斷,最典型的就是IE和火狐下的區別。
php上傳圖片文件(gif,jpg,bmp,png,psd,ico)
php上傳壓縮文件(rar,7z,zip)
php上傳可執行文件(exe)
php上傳視頻文件,音樂文件,歌詞文件(avi,rmvb,3gp,flv,mp3,wav,krc,lrc)
php上傳文本文件和文檔文件(word->doc,excel->xls,幻燈片->ppt,pdf,chm)
php上傳數據庫文件(access文件,sql文件,con文件,日志文件log, dat文件)
php上傳網頁文件,腳本文件,字體文件(ini,php,html,htm,字體文件:ttf,fon, js ,xml)
php上傳其他文件(class類文件,dll動態加載庫文件)
史上最完全oophper親測版php文件上傳之文件類型對應表,ie,火狐各一份。
ie
火狐
id |
後綴名 |
php識別出的文件類型 |
0
gif
image/gif
1
jpg
image/pjpeg
2
png
image/x-png
3
bmp
image/bmp
4
psd
application/octet-stream
5
ico
image/x-icon
6
rar
application/octet-stream
7
zip
application/x-zip-compressed
8
7z
application/octet-stream
9
exe
application/octet-stream
10
avi
video/avi
11
rmvb
application/vnd.rn-realmedia-vbr
12
3gp
application/octet-stream
13
flv
application/octet-stream
14
mp3
audio/mpeg
15
wav
audio/wav
16
krc
application/octet-stream
17
lrc
application/octet-stream
18
txt
text/plain
19
doc
application/msword
20
xls
application/vnd.ms-excel
21
ppt
application/vnd.ms-powerpoint
22
pdf
application/pdf
23
chm
application/octet-stream
24
mdb
application/msaccess
25
sql
text/plain
26
con
application/octet-stream
27
log
text/plain
28
dat
text/plain
29
ini
application/octet-stream
30
php
application/octet-stream
31
html
text/html
32
htm
text/html