我們一般不會在前段限制使用者上傳檔案時的檔案類,因為也沒什麼好的辦法來限制只能使用像php,asp這類來操作,下面我來介紹利用js來定義type=file瀏覽上傳時的檔案類型與php中限制上傳檔案類型代碼。
利用js
例1
代碼如下 |
複製代碼 |
(只能上傳JPG或GIF格式的圖片) |
例2
例3
代碼如下 |
複製代碼 |
/* * 判斷圖片類型 * * @param ths * type="file"的javascript對象 * @return true-符合要求,false-不符合 */ function checkImgType(ths){ if (ths.value == "") { alert("請上傳圖片"); return false; } else { if (!/.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(ths.value)) { alert("圖片類型必須是.gif,jpeg,jpg,png中的一種"); ths.value = ""; return false; } } return true; } |
如果是利用php,asp類的我們就不能像上面處理了需要如下
代碼如下 |
複製代碼 |
$name=$_FILES['file4']['name']; //擷取用戶端機器原檔案的名稱 $type=strstr($name,"."); //擷取從"."到最後的字元 if($type!=".txt") { echo "對不起,您上傳檔案的格式不正確!!"; echo "將在3秒鐘後返回前頁..."; } |
上面的方法說實話只能騙小朋友了,只要我們把上傳檔案的尾碼名改一下就可能通過上面驗證
稍加改進後這樣就與檔案尾碼名無關了
代碼如下 |
複製代碼 |
$temppath=$upfile['tmp_name']; $fileinfo=pathinfo($upfile['name']); $extension=$upfile['type']; 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檔案 重新上傳'); } |
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
http://www.bkjia.com/PHPjc/444631.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/444631.htmlTechArticle我們一般不會在前段限制使用者上傳檔案時的檔案類,因為也沒什麼好的辦法來限制只能使用像php,asp這類來操作,下面我來介紹利用js來定義...