php之图片上传到服务器的原理

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>图片上传</title>
    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
</head>
<body>
    <form action="../project.php" method="post" enctype="multipart/form-data">
        选择上传的图片: <input type="file" name="file">
        选择上传的图片: <input type="file" name="demo">
        <br><br>
        <input type="submit" value="上传">
    </form>
</body>
</html>
<?php
header("Content-Type: text/html;charset=utf-8");
// 连接数据库
require './includes/connect.class.php';
$conn = Connect::getInstance();

// $file        = $_FILES['file']; // 获取上传的图片的信息

// 一、界限判断,不加这些也能成功
// 1.1,图片出错
if ($_FILES["file"]["error"] > 0) { 
    switch ($_FILES["file"]["error"]) { 
        case 1 : 
            echo "<script type='text/javascript'>alert('上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值<br>');history.back();</script>"; 
            break; 
        case 2 : 
            echo "<script type='text/javascript'>alert('上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值');history.back();</script>"; 
            break; 
        case 3 : 
            echo "<script type='text/javascript'>alert('文件只有部分被上传');history.back();</script>"; 
            break; 
        case 4 : 
            echo "<script type='text/javascript'>alert('没有文件被上传');history.back();</script>"; 
            break; 
        default : 
            echo "<script type='text/javascript'>alert('末知错误');history.back();</script>"; 
    } 
    exit; 
} 
// 1.2,限定图片的大小
$maxsize = 10000000;  //  使用$_FILES["file"]["size"] 限制大小 单位字节 2M=2000000 
if ($_FILES["file"]["size"] > $maxsize) { 
    echo "<script type='text/javascript'>alert('上传的文件太大,不能超过{$maxsize}字节');history.back();</script>"; 
    exit; 
} 

// 1.3   限制类型 MIME image/gif image/png  gif png jpg 
$allowtype = array("png", "gif", "jpg", "jpeg"); 
$arr = explode(".", $_FILES["file"]["name"]);       //将传输过来的图片名字分开,如demo.png  =》  arrar('demo','png')
$hz = $arr[count($arr) - 1]; //获取扩展名(后缀名)=》png
if (!in_array($hz, $allowtype)) {  //判断类式是否出错
    echo "<script type='text/javascript'>alert('这是不允许的类型');history.back();</script>"; 
    exit; 
}
 


// 二,给图片取一个名字
date_default_timezone_set('PRC'); //设置中国时区,不然的话就和你电脑上的时间不一样了哦
$randname = date("Y") . date("m") . date("d") . date("H") . date("i") . date("s") . rand(100, 999) . "." . $hz;
// 获取将要放置的图片路径
$filepath = "upload/" . $randname;
echo $filepath;

//将临时位置的文件移动到指定的目录上即可 
if(move_uploaded_file($_FILES["file"]["tmp_name"],$filepath)){
    echo '上传成功';
}else{
    echo '上传失败';
}

posted @   coderwcb  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示