php文件上传你必须知道的几点

PHP文件上传攻略

文件上传是Web开发中经常遇到的需求之一,本文将介绍几个关于PHP文件上传的要点,帮助你了解如何在你的网站中成功实现文件上传功能。

第一步:表单编写

要实现文件上传功能,首先需要在HTML表单中添加一个文件上传类型的input标签。例如:

<form action="upload.php" method="post" enctype="multipart/form-data">
  <input type="file" name="myfile">
  <input type="submit" value="Upload">
</form>

注意,input标签的type属性必须设置为filename属性是上传文件的名称,在接下来的PHP脚本中需要用到。

另外,要实现文件上传,还需要在form标签中添加enctype="multipart/form-data"属性,这是告诉服务器表单中包含多媒体数据,需要以二进制流方式进行编码。

第二步:PHP文件编写

接下来,需要编写一个PHP脚本来处理上传的文件。示例如下:

<?php
$target_dir = "uploads/"; // 设置上传目录
$target_file = $target_dir . basename($_FILES["myfile"]["name"]); // 获取上传文件路径
$uploadOk = 1;

// 检查文件是否已存在
if (file_exists($target_file)) {
  echo "文件已存在";
  $uploadOk = 0;
}

// 检查文件大小
if ($_FILES["myfile"]["size"] > 500000) {
  echo "文件过大";
  $uploadOk = 0;
}

// 检查文件类型
if ($_FILES["myfile"]["type"] != "image/jpeg" && $_FILES["myfile"]["type"] != "image/png" && $_FILES["myfile"]["type"] != "image/gif") {
  echo "只支持JPEG、PNG、GIF格式";
  $uploadOk = 0;
}

// 如果上传文件大小、类型等都符合要求,就将文件上传到目标目录
if ($uploadOk == 1) {
  if (move_uploaded_file($_FILES["myfile"]["tmp_name"], $target_file)) {
    echo "上传成功";
  } else {
    echo "上传失败";
  }
}
?>

该PHP脚本主要做了以下几件事:

  1. 设置上传目录
  2. 获取上传文件路径
  3. 检查文件是否已存在
  4. 检查文件大小
  5. 检查文件类型
  6. 如果上传文件符合要求,就将文件上传到目标目录

示例一:上传图片

下面实现一个上传图片的示例。代码如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>上传图片</title>
</head>
<body>
  <h2>上传图片</h2>
  <form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="myfile">
    <input type="submit" value="上传">
  </form>
</body>
</html>
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["myfile"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// 检查文件是否为图片
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["myfile"]["tmp_name"]);
  if($check !== false) {
    $uploadOk = 1;
  } else {
    echo "不是一张图片";
    $uploadOk = 0;
  }
}

// 检查文件是否已存在
if (file_exists($target_file)) {
  echo "文件已存在";
  $uploadOk = 0;
}

// 检查文件大小
if ($_FILES["myfile"]["size"] > 500000) {
  echo "文件过大";
  $uploadOk = 0;
}

// 支持的文件类型
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "只支持JPG、PNG、JPEG、GIF格式";
  $uploadOk = 0;
}

if ($uploadOk == 0) {
  echo "上传失败";
} else {
  if (move_uploaded_file($_FILES["myfile"]["tmp_name"], $target_file)) {
    echo "上传成功";
  } else {
    echo "上传失败";
  }
}
?>

示例二:允许上传多个文件

下面实现一个允许上传多个文件的示例。代码如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>上传多个文件</title>
</head>
<body>
  <h2>上传多个文件</h2>
  <form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="fileToUpload[]" multiple>
    <input type="submit" value="上传">
  </form>
</body>
</html>
<?php
$target_dir = "uploads/";
$uploadOk = 1;
$files = $_FILES["fileToUpload"];

// 遍历文件数组
foreach ($files["error"] as $key => $error) {
  if ($error == UPLOAD_ERR_OK) {
    $tmp_name = $files["tmp_name"][$key];
    $name = $files["name"][$key];
    $target_file = $target_dir . basename($name);
    $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));

    // 检查文件是否已存在
    if (file_exists($target_file)) {
      echo "文件已存在。";
      $uploadOk = 0;
    }

    // 检查文件大小
    if ($files["size"][$key] > 500000) {
      echo "文件过大。";
      $uploadOk = 0;
    }

    // 支持的文件类型
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
    && $imageFileType != "gif" ) {
      echo "只支持JPG、PNG、JPEG、GIF格式。";
      $uploadOk = 0;
    }

    if ($uploadOk == 0) {
      echo "上传失败。";
    } else {
      if (move_uploaded_file($tmp_name, $target_file)) {
        echo "文件".$name."上传成功。<br>";
      } else {
        echo "上传失败。<br>";
      }
    }
  }
}
?>

结语

通过本文的介绍,相信你已经对PHP文件上传有了较为全面的了解。在实际开发中,要根据自己的具体需求选择合适的方式来实现文件上传功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php文件上传你必须知道的几点 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • php中常用的正则表达式的介绍及应用实例代码

    让我们来详细讲解一下“php中常用的正则表达式的介绍及应用实例代码”。 1. 正则表达式介绍 在 PHP 中,可以使用正则表达式进行匹配文本。正则表达式是由字母和符号组成的模式,可以用来匹配、过滤或替换文本。比如,可以使用正则表达式匹配邮箱、电话号码、身份证号码等等。 常见的正则表达式符号: 符号 描述 ., ?, +, *, [], {}, () 这些符号…

    PHP 2023年5月23日
    00
  • php实现斐波那契数列的简单写法

    要实现斐波那契数列的简单写法,我们可以使用PHP语言提供的循环和条件分支等基本功能来实现。具体实现过程分为以下几个步骤: 1. 定义斐波那契数列的规则 斐波那契数列的规则为,第一个数字为 0,第二个数为 1,第三个数开始,为前面两个数之和,即 Fi = Fi-1 + Fi-2。 2. 使用循环实现斐波那契数列 使用 PHP 循环语句 for,可以实现求出斐波…

    PHP 2023年5月25日
    00
  • php数值计算num类简单操作示例

    PHP数值计算Num类是一个常用的数值运算工具类,它提供了一系列数值计算相关的方法,方便进行各种复杂的数值运算。本文将介绍Num类的使用方法,以及常用的数值运算示例。 Num类的使用方法 引入Num类 使用Num类之前必须先引入类文件,可以使用以下代码: require_once ‘Num.php’; 实例化Num类 $num = new Num(); 加法…

    PHP 2023年5月26日
    00
  • php文件夹与文件目录操作函数介绍

    PHP中提供了很多用于操作文件夹和文件目录的内置函数,这使得对文件目录进行处理变得十分方便。下面分别介绍几个常用的文件夹和文件目录操作函数。 一、文件夹操作函数 1.创建文件夹:mkdir() mkdir() 函数用于创建一个新文件夹。它需要两个参数,第一个参数为要创建的文件夹路径,第二个参数为可选参数,用来设置文件夹的权限。 示例: <?php //…

    PHP 2023年5月26日
    00
  • PHP超全局数组(Superglobals)介绍

    PHP超全局数组是指在整个脚本中生效的全局变量,它们是预定义好的变量,可以在任何可见的位置访问。PHP中有以下5个超全局数组: $GLOBALS $_SERVER $_GET $_POST $_COOKIE $_REQUEST $_FILES $_ENV 下面详细介绍一下每一个超全局数组: 1. $GLOBALS $GLOBALS 是一个包含了全部变量的全局…

    PHP 2023年5月26日
    00
  • 提升PHP执行速度全攻略(上)

    下面我将为您详细讲解“提升PHP执行速度全攻略(上)”的完整攻略。 提升PHP执行速度全攻略(上) PHP作为一门动态语言,执行效率一直是其所面临的瓶颈之一。本文将从以下几个方面为您详细介绍提升PHP执行速度的方法: 1. 使用 OpCache OpCache是一个基于opcode的缓存系统,可以存储PHP解析后的opcode,从而减少代码的解析时间,提高P…

    PHP 2023年5月30日
    00
  • phpstudy apache开启ssi使用详解

    PHPStudy+Apache开启SSI使用详解 SSI(Server Side Include)是一种服务器端的页面包含技术,可以在HTML页面中嵌入动态内容。在PHPStudy中,我们可以通过配置Apache服务器来开启SSI功能。 以下是PHPStudy+Apache开启SSI使用的详细步骤: 1. Apache配置文件 首先,我们需要修改Apache…

    PHP 2023年5月12日
    00
  • php实现httpclient类示例

    针对 “php实现httpclient类示例” 的攻略,可以分为以下几个部分: 1. 了解HTTP请求 在实现HTTP客户端类之前需要对HTTP请求有一定的了解。HTTP请求通常由请求方式(GET、POST、PUT、DELETE等)、请求地址(URL)、协议版本(HTTP/1.0或HTTP/1.1)、请求头(Accept、User-Agent、Content…

    PHP 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部