php上传功能集后缀名判断和随机命名(强力推荐)

yizhihongxing

PHP上传功能集后缀名判断和随机命名攻略

在PHP中,实现上传功能时,通常需要对上传的文件进行后缀名判断和随机命名,以增加安全性和避免文件名冲突。下面是一个完整的攻略,包含了后缀名判断和随机命名的实现。

后缀名判断

  1. 获取上传文件的原始文件名和临时文件路径。
  2. 使用pathinfo()函数获取文件的后缀名。
  3. 使用in_array()函数判断后缀名是否在允许的文件类型列表中。
  4. 如果后缀名不在允许的文件类型列表中,返回错误信息或执行相应的操作。

以下是一个示例代码:

$allowedExtensions = array('jpg', 'jpeg', 'png', 'gif');
$filename = $_FILES['file']['name'];
$tmpFilePath = $_FILES['file']['tmp_name'];

$fileExtension = pathinfo($filename, PATHINFO_EXTENSION);

if (!in_array($fileExtension, $allowedExtensions)) {
    echo \"只允许上传以下类型的文件:\" . implode(', ', $allowedExtensions);
    // 或执行其他操作,如返回错误信息、记录日志等
} else {
    // 后续处理逻辑
}

随机命名

  1. 生成一个随机的文件名,可以使用uniqid()函数结合时间戳生成唯一的文件名。
  2. 使用pathinfo()函数获取原始文件名的后缀名。
  3. 将随机文件名和后缀名拼接成完整的文件名。

以下是一个示例代码:

$randomFilename = uniqid() . '.' . $fileExtension;
$destinationPath = '/path/to/upload/directory/' . $randomFilename;

// 将临时文件移动到目标路径
move_uploaded_file($tmpFilePath, $destinationPath);

在上述示例中,uniqid()函数生成一个唯一的字符串,$fileExtension保存了原始文件的后缀名,$destinationPath是最终保存文件的路径。

综合示例:

$allowedExtensions = array('jpg', 'jpeg', 'png', 'gif');
$filename = $_FILES['file']['name'];
$tmpFilePath = $_FILES['file']['tmp_name'];

$fileExtension = pathinfo($filename, PATHINFO_EXTENSION);

if (!in_array($fileExtension, $allowedExtensions)) {
    echo \"只允许上传以下类型的文件:\" . implode(', ', $allowedExtensions);
    // 或执行其他操作,如返回错误信息、记录日志等
} else {
    $randomFilename = uniqid() . '.' . $fileExtension;
    $destinationPath = '/path/to/upload/directory/' . $randomFilename;

    // 将临时文件移动到目标路径
    move_uploaded_file($tmpFilePath, $destinationPath);

    echo \"文件上传成功!新文件名为:\" . $randomFilename;
}

以上就是实现PHP上传功能集后缀名判断和随机命名的完整攻略。你可以根据自己的需求进行相应的修改和扩展。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php上传功能集后缀名判断和随机命名(强力推荐) - Python技术站

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

相关文章

  • Java中final作用于变量、参数、方法及类该如何处理

    final作用于变量 当final作用于变量时,表示该变量的值只能被赋值一次,一旦赋值不能更改。在Java中,final变量通常被用作常量或配置信息等需要被保护的不可变数据。 示例代码: public class FinalVariableExample { public static void main(String[] args) { final int…

    other 2023年6月26日
    00
  • SonarQube安装、配置与使用教程图解

    SonarQube安装、配置与使用教程图解 介绍 SonarQube是一个非常流行的开源代码检测工具。它可以为开发者提供代码质量分析、漏洞检测、技术债务管理等功能。本文将介绍SonarQube的安装、配置与使用方法。 安装 Step 1: 在SonarQube官网上下载最新的稳定版本,解压到指定的目录下。 Step 2: 安装Java运行环境(JRE)。 配…

    other 2023年6月27日
    00
  • Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程

    Win11的右键单击默认只显示常用的菜单项,如果你想要在右键单击时显示所有选项,可以按照以下步骤进行设置: 1. 打开“设置”菜单 在Win11系统中,点击任务栏上的“搜索”图标或者按下“Win”键,然后输入“设置”来打开“设置”菜单。也可以在“开始菜单”中找到并点击“设置”图标。 2. 进入“设备”设置 在“设置”菜单中,选择“设备”选项,然后进入“鼠标”…

    other 2023年6月27日
    00
  • asp在IE浏览器中下载服务端上的各类文件的实现方法

    ASP(Active Server Pages)是一种被广泛运用的服务器端脚本语言,可用于创建动态的、交互式的Web页面。IE(Internet Explorer)是Windows操作系统自带的浏览器。在IE浏览器中下载服务端上的各类文件的实现方法是当用户访问网站时,服务器通过ASP脚本生成相应的文件,在浏览器上弹出下载对话框供用户下载。 实现方法如下: 1…

    other 2023年6月27日
    00
  • 魔兽世界7.2.5踏风怎么堆属性 wow7.25踏风配装属性优先级攻略

    魔兽世界7.2.5踏风怎么堆属性 wow7.25踏风配装属性优先级攻略 作为一个踏风职业的玩家,在魔兽世界7.2.5版本时,如何堆属性是一个非常重要的问题。本篇攻略将帮助你更好地理解踏风职业的属性堆叠方法和优先级,帮助你更合理地配装。 1. 魔法发挥与速度 作为踏风职业的核心属性,魔法发挥和速度都非常重要。 魔法发挥越高,你的技能输出越强。而速度越高,则可以…

    other 2023年6月27日
    00
  • iOS中各种UI控件属性设置示例代码

    下面就是详细讲解“iOS中各种UI控件属性设置示例代码”的完整攻略。 1. UILabel 属性设置 1.1 设置字体大小和颜色 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 50)]; label.text = @"Hello World"; …

    other 2023年6月26日
    00
  • Python 中的嵌套字典推导的使用及优势

    Python 中的嵌套字典推导的使用及优势 在Python中,嵌套字典推导是一种强大的工具,可以快速创建和转换嵌套字典。嵌套字典推导的语法类似于列表推导,但是可以在字典中嵌套使用。 基本语法 嵌套字典推导的基本语法如下: {key_expression: value_expression for outer_loop for inner_loop} 其中,k…

    other 2023年7月27日
    00
  • druidsql解析器概览

    Druid SQL解析器概览攻略 Druid SQL解析器是一个用于解析SQL语句的工具,它可以将SQL语句解析成语树,并提供了一些API来访问语法树中的元素。Druid SQL解析器支持大多数SQL语句,包括SELECT、INSERT、UPDATE和DELETE等。 示例1:使用Druid SQL解析器解析SELECT语句 以下是一个使用Druid SQL…

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