首页 > php框架 > 限制上传文件类型程序代码

限制上传文件类型程序代码

我们一般不会在前段限制用户上传文件时的文件类,因为也没什么好的办法来限制只能使用像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中的一种");
            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 )
{
    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="wend.php">重新上传</a>');
    
 }

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.phprm.com/frame/php1005346.html

转载随意,但请附上文章地址:-)

标签:none

发表留言