PHP-上传文件
Posted Sch01aR#
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP-上传文件相关的知识,希望对你有一定的参考价值。
php.ini中和和文件上传相关的选项
指令名 | 默认值 | 描述 |
file_uploads | ON | 服务器上的php脚本是否可以接受文件上传 |
max_execution_time | 30 | PHP脚本在注册一个致命错误之前可以执行的最长时间,以秒为单位 |
memory_limit | 128MB | 设置PHP脚本可以分配到的最大内存,以MB为单位,这样可以防止失控的脚本独占服务器内存 |
upload_max_filesize | 2MB | 设置上传文件的大小的最大值,以MB为单位。此指令必须小于post_max_size |
upload_tmp_dir | NULL | 设置文件上传后存放的临时目录 |
post_max_size | 8M | 通过POST方式发送信息的大小,以MB为单位 |
用来上传文件的php脚本
<form enctype="multipart/form-data" action="upload.php" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="2000000" /> 上传文件:<input type="file" name="userfile" /> <input type="submit" value="上传" /> </form>
POST方式发送文件到upload.php进行处理
选择本地的一个shell.jpg文件
upload.php中的内容
<?php //打印文件信息的数组 print_r($_FILES); ?>
点击上传
全局数组$_FILES中的元素说明
数组 | 描述 |
$_FILES[\'userfile\'][\'name\'] | 上传的文件的文件名 |
$_FILES[\'userfile\'][\'type\'] | 上传的文件的文件类型 |
$_FILES[\'userfile\'][\'tmp_name\'] | 上传的文件临时存放地址 |
$_FILES[\'userfile\'][\'error\'] | 上传的文件的错误类型 |
$_FILES[\'userfile\'][\'size\'] | 上传的文件的大小 |
对上传的文件进行过滤和处理
<?php //允许上传的文件类型 $allow_type = [\'image/jpeg\', \'image/png\', \'image/pjpeg\', \'image/x-png\', \'image/gif\']; //判断上传的类型是否被允许 if (!in_array($_FILES[\'userfile\'][\'type\'], $allow_type)){ echo "<script>alert(\'只允许上传jpg/png/gif类型的图片\')</script>"; exit; } //判断上传过程中是否发生错误 if ($_FILES[\'userfile\'][\'error\'] != 0){ switch ($_FILES[\'userfile\'][\'error\']) { case 1: echo "<script>alert(\'上传文件的大小超过了php.ini中upload_max_filesize的约定值\')</script>"; break; case 2: echo "<script>alert(\'上传文件的大小超过了上传表单max_file_size规定的最大值\')</script>"; break; case 3: echo "<script>alert(\'文件只被部分上传\')</script>"; break; case 4: echo "<script>alert(\'文件没有被上传\')</script>"; break; } exit; } //用来再次判断上传文件的大小 define(\'MAX_SIZE\', 2000000); if ($_FILES[\'userfile\'][\'size\'] > MAX_SIZE){ echo "<script>alert(\'上传的文件大小不能超过2M\')</script>"; exit; } //判断目录是否存在 define(\'URL\', dirname(__FILE__).\'\\files\'); if (!is_dir(URL)) { mkdir(URL); } //把文件从临时文件夹移动到指定文件夹 if (is_uploaded_file($_FILES[\'userfile\'][\'tmp_name\'])){ if (!@move_uploaded_file($_FILES[\'userfile\'][\'tmp_name\'], URL.\'/\'.$_FILES[\'userfile\'][\'name\'])){ echo "<script>alert(\'移动失败\');history.back();</script>"; exit; } }else { echo "<script>alert(\'临时文件夹找不到文件\');history.back();</script>"; exit; } //经过以上过滤,符合条件的文件上传成功,执行以下语句 echo "<script>alert(\'文件上传成功\');location.href=\'url.php?url=files/".$_FILES[\'userfile\'][\'name\']."\'".";</script>"; ?>
上传文件
然后跳转到http://127.0.0.1/upload/url.php?url=files/shell.jpg
以上是关于PHP-上传文件的主要内容,如果未能解决你的问题,请参考以下文章