使用PHP腳本上傳文件時需要將文件格式處理為PHP所認識的文件類型,例如(.jpg的文件格式為image/jpeg)。這個格式的判斷首先是由浏覽器完成的,浏覽器通過表單的提交判斷是某類文件,再提交給php進行處理。
有時候不同浏覽器對文件類型的定義不相同,因此有時候需要對不同的浏覽器做判斷。其實可以將不同浏覽器的類型都加入到判斷中。
下面提供一張IE和火狐浏覽器的文件類型對照表:
ie
火狐
id |
後綴名 |
php識別出的文件類型 |
0
gif
image/gif
1
jpg
image/jpeg
2
png
image/png
3
bmp
image/bmp
4
psd
application/octet-stream
5
ico
image/x-icon
6
rar
application/octet-stream
7
zip
application/zip
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
application/octet-stream
26
con
application/octet-stream
27
log
text/plain
28
dat
application/octet-stream
29
ini
application/octet-stream
30
php
application/octet-stream
31
html
text/html
32
htm
text/html
33
ttf
application/octet-stream
34
fon
application/octet-stream
35
js
application/x-javascript
36
xml
text/xml
37
dll
application/octet-stream
38
dll
application/octet-stream
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
33
ttf
application/octet-stream
34
fon
application/octet-stream
35
js
text/html
36
xml
text/xml
37
dll
application/octet-stream
38
class
application/java
下面看一個實例
代碼如下
$temppath=$upfile['tmp_name'];
$fileinfo=pathinfo($upfile['name']);
$extension=$upfile['type'];
//echo $extension;
//exit;
switch( $extension )
{
case 'application/msword':
$extension ='doc';
break;
case 'application/vnd.ms-excel':
$extension ='xls';
break;
case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':
$extension ='docx';
break;
case 'application/vnd.ms-powerpoint':
$extension ='ppt';
break;
case 'application/pdf':
$extension ='pdf';
break;
case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':
$extension ='xlsx';
break;
default:
die('只允許上傳doc,docx,xls,pdf,ppt文件 <a href="a.php">重新上傳</a>');
}
上面實例就限制了只能上傳doc,docx,xls,pdf,ppt了,這樣如果有人想利用後綴名上傳其它如php或asp文件就存在會提示上傳文件不合法。