我們一般不會在前端限制用戶上傳文件時的文件類,因為也沒什么好的辦法來限制只能使用像php,asp這類來操作,下面我來介紹利用js來定義type=file瀏覽上傳時的文件類型與php中限制上傳文件類型代碼.
利用js,例1代碼如下:
- <script>
- function check(){
- var filepath=path.value
- filepath=filepath.substring(filepath.lastIndexOf('.')+1,filepath.length)
- if(filepath != 'jpg' && filepath != 'gif')
- alert("只能上傳JPG或GIF格式的圖片")
- }
- </script>
- <input type=file name=path onpropertychange="check()"> (只能上傳JPG或GIF格式的圖片)
例2,代碼如下:
- <script>
- function ck(obj){if(obj.value.length>0){
- var af="jpg,gif,png,zip,rar,txt,htm";
- if(eval("with(obj.value)if(!/"+af.split(",").join("|")+"/ig.test(substring(lastIndexOf('.')
- +1,length)))1;")){alert("Allowed file types:n"+af);obj.createTextRange().execCommand('delete')};
- }}
- </script>
- <form>
- <input type=file name=path onpropertychange="ck(this)"/></form>
例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中的一種");
- //開源代碼Vevb.com
- ths.value = "";
- return false;
- }
- }
- return true;
- }
如果是利用php,asp類的我們就不能像上面處理了需要如下代碼:
- $name=$_FILES['file4']['name']; //獲取客戶端機器原文件的名稱
- $type=strstr($name,"."); //獲取從"."到最后的字符 if($type!=".txt")
- { echo "對不起,您上傳文件的格式不正確!!";
- echo "<meta http-equiv="Refresh" content="3;url=index.php?lmbs=文件上傳">將在3秒鐘后返回前頁...";
- }
上面的方法說實話只能騙小朋友了,只要我們把上傳文件的后綴名改一下就可能通過上面驗證,稍加改進后這樣就與文件后綴名無關了,代碼如下:
- $temppath=$upfile['tmp_name'];
- $fileinfo=pathinfo($upfile['name']);
- $extension=$upfile['type'];
- switch( $extension )
- {
- '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="wend.php">重新上傳</a>');
- }
id 后綴名 php識別出的文件類型
新聞熱點
疑難解答