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

yizhihongxing

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四种基础算法代码实例”的攻略。 简介 本文主要介绍PHP四种基础算法代码实例,包括查找、排序、递归、动态规划四个方面,旨在帮助读者提高对PHP算法的理解和应用。 查找算法 二分查找 二分查找是一种基于比较目标值和查找中值的算法。查找前必须先体会「有序」的重要性。如果数据未排序,需要先排序。 代码实例: function binar…

    PHP 2023年5月23日
    00
  • 详解PHP字符串替换str_replace()函数四种用法

    下面我来详细讲解一下“详解PHP字符串替换str_replace()函数四种用法”的完整攻略。 一、概述 在PHP程序中,我们经常需要对字符串进行一些替换操作,比如将字符串中的某些字符替换成另外一些字符。在PHP中,可以使用str_replace()函数来实现字符串替换操作。 二、str_replace()函数的基本用法 str_replace()函数的基本…

    PHP 2023年5月26日
    00
  • PHP入门速成教程

    PHP入门速成教程攻略 本教程旨在帮助初学者快速掌握基础的PHP编程语言知识,通过简单易懂的教程和实例来提高大家的编程技能,让大家可以尽快掌握PHP,进入编程领域的大门。 第一步:学习基础语法 首先,我们需要学习PHP的基础语法,包括变量、条件语句、循环语句等。 以下是一个简单的示例: <?php $name = "Lucy"; i…

    PHP 2023年5月23日
    00
  • PHP页面实现定时跳转的方法

    关于“PHP页面实现定时跳转的方法”的攻略,下面请看详细说明: 一、使用PHP的header函数实现定时跳转 PHP内置的header函数可以实现HTTP协议头的输出,我们可以利用这一特性来实现定时跳转功能。 代码示例: <?php header("refresh: 5;url=http://www.example.com"); /…

    PHP 2023年5月29日
    00
  • 为你总结一些php系统类函数

    下面是详细讲解“为你总结一些PHP系统类函数”的完整攻略: 什么是系统类函数 系统类函数是指 PHP 内置的一系列函数,用来实现一些基础的、常见的功能,例如:数组操作、字符串操作、文件操作等。 PHP系统类函数的分类 PHP的系统函数分为以下几类: 数组函数(array) 字符串函数(string) 文件函数(file) 目录函数(dir) 时间日期函数(d…

    PHP 2023年5月23日
    00
  • PHP读取文件,解决中文乱码UTF-8的方法分析

    PHP读取文件,解决中文乱码UTF-8的方法分析 在PHP中读取文件时,我们经常会遇到中文乱码的问题,尤其是当文件编码为UTF-8时。下面我们将详细讲解如何解决这个问题。 问题分析 在读取UTF-8编码的文件时,PHP默认使用的是ISO-8859-1编码。因此,如果在读取UTF-8文件时不做处理,就会出现中文乱码问题。 解决这个问题一般有两种方法,分别是: …

    PHP 2023年5月26日
    00
  • phplib中的一些基本语法和函数

    下面就是phplib中的一些基本语法和函数的完整攻略: 基本语法 变量 变量在php中是一个非常基础的概念。在phplib中,变量也是由$符号后跟名称组成。以下是一个基本的变量示例: $name = "Tom"; $age = 20; 数据类型 PHP支持大量的数据类型,包括整数、浮点数、字符串、数组、对象和更多。下面是一些基本的类型示例…

    PHP 2023年5月25日
    00
  • 微信小程序进行微信支付的步骤昂述

    如果你在微信小程序中需要实现微信支付功能,可以按照以下步骤进行操作: 1.在微信商户平台中注册一个账号并获取商户号。在注册商户平台账号时需要提供相关资料,包括公司名称、法人姓名、营业执照证件等。商户号是唯一标识商户的一串数字,需要保密保存。 2.开通微信支付功能并获取相关的密钥。在商户平台中开通微信支付功能后会自动生成商户API密钥,需要妥善保管该密钥。 3…

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