PHP文件上传

客户端代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>文件上传</title>
</head>
<body>
    
    <form action="test3.php" method="post" enctype="multipart/form-data">
        <!-- 文件最大尺寸限制 -->
        <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
        文件:<input type="file" name="me" />
        <input type="submit" />
    </form>
</body>
</html>

 服务端代码如下:

<?php
    //PHP上传
    //客户端form method必须设置为post enctype必须设置为multipart/form-data
    
    //服务器php.ini相关选项
    //file_uploads          默认值 ON  打开文件上传
    //post_max_size         默认值 8M  限制通过POST可以接受的最大值
    //upload_max_filesize   默认值 2M  限制上传的文件大小 此值必须小于post_max_size
    //upload_tmp_dir        默认值 null 上传文件存放的临时路径
    
    //全局数组$_FILES说明
    //$_FILES['me']['name']     客户端文件的原名称,包含扩展名
    //$_FILES['me']['size']     已上传文件的大小,单位为字节
    //$_FILES['me']['tmp_name'] 文件被上传后,在服务器存储的临时文件名
    //$_FILES['me']['type']     文件的MIME类型
    //$_FILES['me']['error']    错误码     0没有错误发生,文件上传成功      1上传的文件大小超过了upload_max_filesize的值
    //                          2文件大小超过了HTML表单中MAX_FILE_SIZE的值  3文件只有部分被上传      4没有文件被上传
    //                          6找不到临时文件夹       7文件写入失败
    
    //相关函数
    //bool is_uploaded_file(string $filename);              该函数检查文件是否是通过HTTP POST上传的
    //bool move_uploaded_file(string $src, string $des);    该函数检查文件合法后再移动文件

    $allowtype = ['jpg', 'png', 'gif', 'bmp'];      //允许上传的文件类型
    $size      = 1000000;                           //最大文件大小
    $path      = './test';                          //文件保存目录
    
    if($_FILES['me']['error'] > 0){
        echo '上传错误: ';
        switch($_FILES['me']['error']){
            case 1: die('上传的文件大小超过了upload_max_filesize的值');
            case 2: die('文件大小超过了HTML表单中MAX_FILE_SIZE的值');
            case 3: die('文件只有部分被上传');
            case 4: die('没有文件被上传');
            case 6: die('找不到临时文件夹 ');
            case 7: die('文件写入失败');
        }
    }

    if($_FILES['me']['size'] > $size){
        die('文件大小超过了'.$size.'字节');
    }

    $suffix = substr($_FILES['me']['name'], strrpos($_FILES['me']['name'], '.')+1);
    if(!in_array($suffix, $allowtype)){
        die('文件类型'.$suffix.'不被允许! 仅允许'.implode(',',$allowtype));
    }

    if(!file_exists($path)) mkdir($path);
 
    $filename = $path.'/'.date('YmdHis').rand(100,999).'.'.$suffix;

    if(is_uploaded_file($_FILES['me']['tmp_name'])){
        if(!move_uploaded_file($_FILES['me']['tmp_name'], $filename)){
            die('不能将文件移动到指定目录');
        }
    }else{
        die('文件'.$_FILES['me']['tmp_name'].'不是一个合法文件');
    }

    echo '文件'.basename($filename).'上传成功';

 

转载于:https://my.oschina.net/u/2965390/blog/761379

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值