PHP 图片文件上传实现代码

下面我来详细讲解一下“PHP 图片文件上传实现代码”的完整攻略。

步骤一:HTML表单制作

HTML表单用于用户上传图片,代码如下:

<form action="upload.php" method="post" enctype="multipart/form-data">
  <label for="file">上传图片:</label>
  <input type="file" name="file" id="file" />
  <br />
  <input type="submit" name="submit" value="上传" />
</form>

在这个表单中,我们使用了 enctype="multipart/form-data",这是因为图片和其他数据是以二进制流的形式上传的,而非字符串形式的,因此必须使用这种编码方式。

步骤二:PHP服务端实现

PHP 的服务器端实现由两部分组成:上传验证和文件处理。

上传验证

上传验证主要检查文件是否符合要求,同时生成一个唯一的文件名。

<?php
$max_size = 5*1024*1024; // 限制上传文件的大小为5M
$allowed_ext = array('jpg', 'jpeg', 'png', 'gif'); // 允许上传的文件格式

if (isset($_FILES['file'])) {
  // 判断上传文件是否出错
  if ($_FILES['file']['error']) {
    exit($_FILES['file']['error']); // 报告上传错误
  }
  // 检查文件大小是否符合要求
  if ($_FILES['file']['size'] > $max_size) {
    exit('文件大小超过5M,上传失败。');
  }
  // 获取文件的扩展名
  $ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
  // 检查文件格式是否符合要求
  if (!in_array($ext, $allowed_ext)) {
    exit('不允许上传该类型的文件。');
  }
  // 生成唯一的文件名
  $file_name = md5(uniqid()).'.'.$ext;
}
?>

文件处理

文件处理主要是将上传的文件移动到服务器上指定的目录中。

<?php
if (isset($file_name)) {
  $path = "uploads/".$file_name; // 设置上传文件的保存路径
  if (move_uploaded_file($_FILES['file']['tmp_name'], $path)) {
    echo '上传成功。'; // 输出上传结果
  } else {
    echo '上传失败。'; // 输出上传结果
  }
}
?>

步骤三:完整代码演示

<?php
$max_size = 5*1024*1024; // 限制上传文件的大小为5M
$allowed_ext = array('jpg', 'jpeg', 'png', 'gif'); // 允许上传的文件格式

if (isset($_FILES['file'])) {
  // 判断上传文件是否出错
  if ($_FILES['file']['error']) {
    exit($_FILES['file']['error']); // 报告上传错误
  }
  // 检查文件大小是否符合要求
  if ($_FILES['file']['size'] > $max_size) {
    exit('文件大小超过5M,上传失败。');
  }
  // 获取文件的扩展名
  $ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
  // 检查文件格式是否符合要求
  if (!in_array($ext, $allowed_ext)) {
    exit('不允许上传该类型的文件。');
  }
  // 生成唯一的文件名
  $file_name = md5(uniqid()).'.'.$ext;
}

if (isset($file_name)) {
  $path = "uploads/".$file_name; // 设置上传文件的保存路径
  if (move_uploaded_file($_FILES['file']['tmp_name'], $path)) {
    echo '上传成功。'; // 输出上传结果
  } else {
    echo '上传失败。'; // 输出上传结果
  }
}
?>

注:上传的文件会被保存在 uploads 目录下。

示例说明

示例一

上传一张宽度为 600 像素、高度为 400 像素的 jpg 格式图片。上传成功后,输出“上传成功”。

<form action="upload.php" method="post" enctype="multipart/form-data">
  <label for="file">上传图片:</label>
  <input type="file" name="file" id="file" />
  <br />
  <input type="submit" name="submit" value="上传" />
</form>

示例二

上传一张宽度为 1200 像素、高度为 800 像素的 bmp 格式图片。上传失败后,输出“不允许上传该类型的文件”。

<form action="upload.php" method="post" enctype="multipart/form-data">
  <label for="file">上传图片:</label>
  <input type="file" name="file" id="file" />
  <br />
  <input type="submit" name="submit" value="上传" />
</form>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP 图片文件上传实现代码 - Python技术站

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

相关文章

  • smarty模板数学运算示例

    下面详细讲解 “smarty模板数学运算示例” 的完整攻略: 1. 什么是Smarty模板? Smarty模板引擎是一个基于 PHP的模板引擎。Smarty模板引擎将业务逻辑与展现逻辑分开,使 HTML 代码更加简洁,易于维护。 为了使用Smarty模板引擎,需要在PHP项目中安装Smarty,并进行相关的配置。 2. Smarty模板数学运算示例 在Sma…

    PHP 2023年5月26日
    00
  • PHP数组Key强制类型转换实现原理解析

    PHP数组Key强制类型转换实现原理解析 强制类型转换介绍 强制类型转换是PHP语言中的基本特性,可以通过强制将一个变量从一种数据类型转换成为另一种数据类型来实现。强制类型转换在处理数组中的索引键(即key)时特别有用,主要是由于PHP在处理一些类型转换时需要把数据类型强制转换为字符串或数字。而对于数组索引键,PHP中默认会将变量从其他类型转换为整型,如果此…

    PHP 2023年5月26日
    00
  • php下intval()和(int)转换使用与区别

    在PHP中,intval()和(int)都是用来将一个数据转换为整型数据类型的函数/运算符,但它们之间存在一些细微的差别。 intval() intval()是PHP中用来将一个数据类型转换为整型数据的函数,它的语法是: intval($value, $base = 10); 第一个参数表示需要转换的值,第二个参数可选,表示要转换的数字的进制,默认值是10进…

    PHP 2023年5月26日
    00
  • 是 WordPress 让 PHP 更流行了 而不是框架

    首先要了解的是,WordPress是基于PHP语言开发的开源CMS(内容管理系统)软件。PHP是一种流行的服务器端编程语言之一,其相对容易学习和使用的特性也是让其流行的原因之一。因此,许多开发人员选择基于PHP框架进行开发,如Laravel、Symfony、CodeIgniter等,这些框架帮助开发者通过提供许多常见的解决方案和工具,加快了项目的开发速度和质…

    PHP 2023年5月23日
    00
  • php基于session锁防止阻塞请求的方法分析

    下面是“php基于session锁防止阻塞请求的方法分析”的完整攻略: 1. 什么是session锁? 在 PHP 里面,session 锁是用来保护具有相同 session id 的请求并发执行时,避免发生数据混乱或重复操作等问题。如果不加锁,当多个请求同时访问同一 session 数据时,就会出现数据上的混乱问题。所以,我们常常需要使用session 锁…

    PHP 2023年5月27日
    00
  • PHP输出Excel PHPExcel的方法

    下面是关于PHP输出Excel PHPExcel的方法的完整攻略,包含以下几个部分: 安装PHPExcel 要使用PHPExcel,需要先将它安装到你的项目中。可以从PHPExcel的官方网站https://github.com/PHPOffice/PHPExcel下载最新版本的代码,也可以使用composer命令进行安装。如果使用composer,可以在项…

    PHP 2023年5月26日
    00
  • php基于curl实现的股票信息查询类实例

    下面我将详细讲解 “php基于curl实现的股票信息查询类实例” 的完整攻略,内容如下: 1. 什么是curl? Curl是一个用于传输数据的工具和库,支持多种协议,包括HTTP、FTP、TELNET、Gopher等。curl常用于与Web服务器进行数据交互或抓取网页数据。 2. 使用方法 2.1 安装curl 在使用curl之前,需要确保你的PHP环境已经…

    PHP 2023年5月26日
    00
  • PHP生成随机字符串实例代码(字母+数字)

    下面我给你详细讲解“PHP生成随机字符串实例代码(字母+数字)”的完整攻略,主要分为以下几个步骤: 1. 确定字符串长度 首先,我们需要确定所生成的随机字符串的长度。可根据实际需求进行修改,这里假设所需生成的随机字符串长度为8。 2. 定义字符池 接下来,我们需要定义一个字符池,用于生成随机字符串的字符来源。在这里我们选择了包含字母和数字的字符池,具体定义如…

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