PHP中文件的上传

Author: 刘老师(Aaron Lau) 武汉长乐教育,武汉PHP培训课程,版权所有,转载请注明!

PHP中文件的上传

课程概要

  1. 表单的修改
  2. PHP处理上传部分
  3. 多个文件的上传

1. 表单的修改

<form enctype="multipart/form-data" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
    <input type="file" name="file"/>
    <input type="submit">
</form>

2. PHP处理上传部分


if ($_FILES['file']['error'] > 0) {
    echo '上传错误: ';
    switch ($_FILES['file']['error']) {
        case 1:
            echo '上传文件大小超出了PHP配置文件中的约定值:upload_max_filesize';
            break;
        case 2:
            echo '上传文件大小超出了表单中的约定值:MAX_FILE_SIZE';
            break;
        case 3:
            echo '文件只被部分上载';
            break;
        case 4:
            echo '没有上传任何文件';
            break;
    }
    //如果$_FILES['myfile']['error']大于0都是有错误,输出错误信息并退出程序
    exit;
}

//获取上传文件的MIME类型中的主类型和子类型
//    list($maintype, $subtype) = explode("/", $_FILES['file']['type']);
//
//限制为图片,如果用户修改了文件后缀,就判断不出来了
//    if ($maintype != "image") {
//        echo '问题: 只能上传图片。';
//        //如果用户上传文本文件则退出程序
//        exit;
//    }

//安全的判断图片的方法
if (!getimagesize($_FILES['file']['tmp_name'])) {
    echo '问题: 只能上传图片。';
    exit;
}

//截取文件后缀名
$extension = strrchr($_FILES['file']['name'], '.');

//定义上传后的位置和新文件名
$dir = 'uploads/' . date('Y_m_d', time());
if (!is_dir($dir)) {
    //递归建立目录
    mkdir($dir, 0777, true);
}

$upfile = $dir . '/' . time() . '_' . rand(100000, 999999) . $extension;

//判断是否为上传文件
if (is_uploaded_file($_FILES['file']['tmp_name'])) {
    //从移动文件
    if (!move_uploaded_file($_FILES['file']['tmp_name'], $upfile)) {
        echo '问题: 不能将文件移动到指定目录。';
        exit;
    }
} else {
    echo '问题: 上传文件不是一个合法文件: ';
    echo $_FILES['file']['name'];
    exit;
}

//如果文件上传成功则输出
echo '文件' . $upfile . '上传成功,大小为' . $_FILES['file']['size'] . '!<br>';

3. 多个文件的上传

<html>
    <head><title>文件上传</title></head>
    <body>
        <form action="mul_upload.php"  method="post" enctype="multipart/form-data">
            <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
            选择文件1:<input type="file" name="myfile[]"><br>
            选择文件2:<input type="file" name="myfile[]"><br>
            选择文件3:<input type="file" name="myfile[]"><br>
            <input type="submit" value="上传文件">
        </form>
    </body>
</html>
//打印三维数组$_FILES中的内容,查看一下存储上传文件的结构
print_r($_FILES);
上一篇课程 下一篇课程

学生登录