PHP上传文件

1.首先了解PHP的$_FILES

$_FILES 是一个预定义的数组,用来获取通过 POST 方法上传文件的相关信息。
$_FILES数组内容如下:

  • $_FILES[‘File’][‘name’] 客户端文件的原名称。
  • $_FILES[‘File’][‘type’] 文件的 MIME 类型,需要浏览器提供该信息的支持.
  • $_FILES[‘File’][‘size’] 已上传文件的大小,单位为字节。
  • $_FILES[‘File’][‘tmp_name’] 文件被上传后在服务端储存的临时文件名,
  • $_FILES[‘myFile’][‘error’] 和该文件上传相关的错误代码。

例子:

//接收一个文件,输出$_FILES
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  var_dump($_FILES);
}

在这里插入图片描述

2.使用form表单上传

  • 主要思想是把 POST 方法上传的临时文件移动到目标目录。
<?php
function upload () {
	 // 客户端提交的表单内容中根本没有文件域
  if (!isset($_FILES['avatar'])) {
     //全局变量,提示信息
    $GLOBALS['message'] = '上传失败';
    return;
  }

  $avatar = $_FILES['avatar'];
  // $avatar => array(5) {
  //   ["name"]=>  
  //   string(11) "02.png"
  //   ["type"]=>
  //   string(9) "image/png"
  //   ["tmp_name"]=>   
  //   string(27) "C:\Windows\Temp\php1138.tmp"  //这个是临时文件
  //   ["error"]=>
  //   int(0)
  //   ["size"]=>
  //   int(4398)
  // }
  if ($avatar['error'] !== UPLOAD_ERR_OK) {
    // 服务端没有接收到上传的文件
    $GLOBALS['message'] = '上传失败';
    return;
  }
   // 校验类型 图片类型
  $allowed_types = array('image/jpeg', 'image/png', 'image/gif');
  if (!in_array($avatar['type'], $allowed_types)) {
    $GLOBALS['message'] = '这是不支持的图片格式';
    return;
  }
  // 重要思路是将临时文件移动到网站范围之内
  $source = $avatar['tmp_name']; // 临时文件
  // => 'C:\Windows\Temp\php1138.tmp'
  $target = './uploads/' . $avatar['name']; // 目标放在哪
  // => './uploads/icon-02.png'
  // 移动的目标路径中文件夹一定是一个已经存在的目录
  $moved = move_uploaded_file($source, $target);
  $GLOBALS['message'] = '上传成功';
  if (!$moved) {
    $GLOBALS['message'] = '上传失败';
    return;
  }
     // 移动成功

}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  // 接收文件 使用一个 叫做 $_FILES 超全局成员
   //调用函数
  upload();
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>文件上传</title>
</head>
<body>
<!-- action为本php, encodetype是编码类型,“multipart/form-data”是指表单数据有多部分构成,既有文本数据,又有文件等二进制数据的意思-->
  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
    <input type="file" name="avatar">
    <button>上传</button>
    <!--php和html混合使用,用php的全局变量提示错误信息-->
    <?php if (isset($message)): ?>
    <p ><?php echo $message; ?></p>
    <?php endif ?>
  </form>
</body>
</html>

效果:
(1)上传非图片文件
在这里插入图片描述在这里插入图片描述
(2)上传图片
在这里插入图片描述在这里插入图片描述

3.解决上传文件大小限制

  • 修改 php.ini 中的 post_max_size 配置,让服务端可以接受更大的请求体体积
  • 修改 php.ini 中的 upload_max_filesize 配置,让服务端支持更大的单个上传文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值