一、文件上传的html与PHP注意事项
1.form要设定enctype属性,method设置为post。enctype设置为multipart/form-data后,图片上传信息会被列入$_FILES超全局数组,而非$_POST,从而达到真正的上传目的
2.设定隐藏input:表示最大上传空间
3.PHP配置文件的设置:
图片描述
二、单个文件上传
1.复制或移动上传文件:move_uploaded_file()
bool move_uploaded_file ( string $filename , string $destination )
2.判断错误
图片描述

3.判断类型,通过扩展名数组来判断
4.判断大小
5.设置上传文件的随机文件名(安全性)

<!DOCTYPE >
<html>
    <head>
        <meta charset="utf-8" />
        <style>
            input{
                display: block;
            }
        </style>
    </head>
    <body>
        <form action="receive.php" method="post" enctype="multipart/form-data">
            <label for="uploadname">name:</label><input type="text" value="" name="uploadname" id="uploadname" />
            <input type="hidden" name="MAX_VALUE_SIZE" value="1000000" />
            <input type="file" name="pic" value="" />
            <input type="submit" value="upload" />
        </form>
    </body>
</html>
<?php
    /*echo "<pre>";
    print_r($_POST);
    print_r($_FILES);    
    echo "</pre>";*/
    if($_FILES['pic']['error']>0){
        switch($_FILES['pic']['error']){
            case 1:
                echo"图片大小超过upload_max_filesize<br>";
                break;
            case 2:
                echo"图片大小超过隐藏表单的MAX_FILE_SIZE<br>";
                break;
            case 3:
                echo"文件只被部分上传<br>";
                break;
            case 4:
                echo"没有上传文件<br>";        
                break;    
            case 6:
                echo"找不到临时文件夹<br>";    
                break;        
            case 7:
                echo"写入文件失败<br>";    
                break;    
            default:
                echo "发生未知错误<br>";                
        }
    }
    $extArr=explode('.',$_FILES['pic']['name']);
    $ext=array_pop($extArr);
    $arr=array('jpg','jpeg','png');
    if(!in_array($ext,$arr)){
        echo "上传类型不符<br>";
        exit;
    }
    $maxSize=100000;
    if($_FILES['pic']['size']>$maxSize){
        echo "文件超过规定大小<br>";
        exit;
    }
    Date_default_timezone_set('PRC');
    $proPath=$_FILES['pic']['tmp_name'];
    $newPath='./'.date('ymdhis').rand(100,999).'.'.$ext;
    if(move_uploaded_file($proPath,$newPath)){
        echo "上传成功<br>";
    }else{
        echo "上传失败<br>";
    }
?>

二、多个文件上传
1.将上传按钮的name属性变为索引数组,以方便遍历
2.在上述单个文件实例外层套一个循环即可

<?php
    echo "<pre>";
    print_r($_POST);
    print_r($_FILES);    
    echo "</pre>";
    $num=count($_FILES['pic']['name']);
    for($i=0;$i<$num;$i++){
        //判断错误
        if($_FILES['pic']['error'][$i]>0){
            switch($_FILES['pic']['error']){
                case 1:
                    echo"图片大小超过upload_max_filesize<br>";
                    break;
                case 2:
                    echo"图片大小超过隐藏表单的MAX_FILE_SIZE<br>";
                    break;
                case 3:
                    echo"文件只被部分上传<br>";
                    break;
                case 4:
                    echo"没有上传文件<br>";        
                    break;    
                case 6:
                    echo"找不到临时文件夹<br>";    
                    break;        
                case 7:
                    echo"写入文件失败<br>";    
                    break;    
                default:
                    echo "发生未知错误<br>";                
            }
            continue;
        }
        //判断类型
        $extArr=explode('.',$_FILES['pic']['name'][$i]);
        $ext=array_pop($extArr);
        $arr=array('jpg','jpeg','png');
        if(!in_array($ext,$arr)){
            echo "上传类型不符<br>";
            continue;
        }
        //判断大小
        $maxSize=1000000;
        if($_FILES['pic']['size'][$i]>$maxSize){
            echo "文件超过规定大小<br>";
            continue;
        }
        //设置随机文件名进行上传操作
        Date_default_timezone_set('PRC');
        $proPath=$_FILES['pic']['tmp_name'][$i];
        $newPath='./'.date('ymdhis').rand(100,999).'.'.$ext;
        if(move_uploaded_file($proPath,$newPath)){
            echo "上传{$_FILES['pic']['name'][$i]}成功<br>";
        }else{
            echo "上传失败<br>";
        }
    }
?>

三、文件上传类
1.参考细说PHP文件上传类,进行使用
四、文件下载
1.a标签href属性设置为下载地址
2.http头信息改为附件

<?php
    $filename='view.html';
    header("Content-Type:text/html");
    header("Content-Disposition:attachment;filename:{$filename}");
    header("Content-Length:".filesize($filename));
    readfile($filename);
?>

1111
93 声望10 粉丝