PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP系列(六):文件上传大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

0X00 文件上传

@H_404_2@0X01 文件上传编程思路
  1. 利用html表单获取图片资源;
  2. PHP拿取上传图片资源,判断是否存在@L_262_10@号;($_FILES['file'])
  3. 设置文件大小限制,判断文件大小是否超出范围;
  4. 设置文件后缀和mime类型限制,并进行判断;(in_array)
  5. 设置上传路径,生成存储的目录;(mkdir)
  6. 设置随机文件名,对上传文件进行重命名;(uniqid)
  7. 判断是否为上传文件操作,如果是,进行文件重命名保存操作。(is_uploaded_file,move_uploaded_file)

0X02 @L_262_10@码

PHP 4.2.0 开始,PHP将随文件信息数组一起返回一个对应的@L_262_10@代码。该代码可在文件上传生成文件数组中的error字段中找到。

@L_262_10@码 含义
0 没有@L_262_10@发生,文件上传成功。
1 上传文件超过了PHP.ini中upload_max_filesize的值。
2 上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值。
3 文件只有部分被上传
4 没有文件上传
6 找不到临时文件。(PHP 4.3.10和PHP5.0.3引进)
7 文件写入失败。(PHP 5.1.0引进)

0X03 文件上传编程实战

<html>
    <head>
        <title>文件上传</title>
        <Meta charset="utf-8" />
    </head>
    <body>
        <form action="upload.PHP" method="post" enctype="multipart/form-data">
            <!--限制文件大小-->   <!-- <input type="hidden" name="MAX_FILE_SIZE" value="100" /> -->
            <input type="file" name="file" />
            <input type="submit" value="上传" />
        </form>
    </body>
</html>




<?PHP
//var_dump($_FILES['file']);
//判断是否存在@L_262_10@号
if($_FILES['file']['error'])
{
    switch($_FILES['file']['error'])
    {
        case 1:
            $str = '上传文件超过了PHP.ini中upload_max_filesize的值。';
            break;
        case 2:
            $str = '上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值。';
            break;
        case 3:
            $str = '文件只有部分被上传。';
            break;
        case 4:
            $str = '没有文件上传。';
            break;
        case 6:
            $str = '找不到临时文件。';
            break;
        case 7:
            $str = '文件写入失败。';
            break;
    }
    echo $str;
    exit;
}

//判断文件大小是否超出允许范围
if($_FILES['file']['size'] > (pow(1024,2)*2))
{
    exit('抱歉,你的文件大小超过了2M,请重新选择!');
}

//判断文件后缀和mime类型是否在允许范围
$allowMime = ['image/png','image/jpg','image/jpeg','image/gif','image/wbmp'];
$allowFix = ['png','jpg','jpeg','gif','wbmp'];

$fileInfo = pathinfo($_FILES['file']['name']);      //获取文件名信息
$file_Fix = $fileInfo['extension'];

if(!in_array($file_Fix,$allowFiX))
{
    exit('抱歉,您的文件格式不允许,请重新选择!');
}

if(!in_array($_FILES['file']['type'],$allowMimE))
{
    exit('抱歉,您的文件格式不允许,请重新上传');
}

//设置上传路径
$path = 'upload';
if(!file_exists($path))
{
    mkdir($path);
}

//文件随机
$name = uniqid().'.'.$file_Fix;

//判断是否为上传文件
if(is_uploaded_file($_FILES['file']['tmp_name']))
{
    if(move_uploaded_file($_FILES['file']['tmp_name'],$path.'/'.$Name))
    {
        echo '文件上传成功!';
    }
    else
    {
        exit('文件移动失败!');
    }
}
else
{
    exit('抱歉,您当前非上传文件操作!');
}

?>

大佬总结

以上是大佬教程为你收集整理的PHP系列(六):文件上传全部内容,希望文章能够帮你解决PHP系列(六):文件上传所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: