PHP实现文件上传与下载实例与总结

以下是详细的“PHP实现文件上传与下载实例与总结”的攻略:

PHP实现文件上传

1. HTML表单

文件上传需要通过HTML表单来完成,表单中需要包含 enctype="multipart/form-data" 属性。

<form method="POST" action="./upload.php" enctype="multipart/form-data">
  <input type="file" name="file">
  <input type="submit" value="上传">
</form>

2. PHP处理

在PHP脚本中,需要使用 $_FILES 变量来获取文件上传信息。

// 上传文件保存目录
$uploadDir = './uploads/';

// 获取上传的文件信息
$file = $_FILES['file'];

// 处理上传
if ($file['error'] === UPLOAD_ERR_OK) { // 上传成功
  // 移动文件到指定目录下,并生成新的文件名
  $newFileName = $uploadDir . uniqid() . '.' . pathinfo($file['name'], PATHINFO_EXTENSION);
  move_uploaded_file($file['tmp_name'], $newFileName);

  // 输出上传成功信息
  echo '文件上传成功';
} else { // 上传失败
  echo '上传失败:' . $file['error'];
}

3. 示例说明

下面是一个完整的上传示例,其中还包含了文件类型判断和文件大小限制。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>文件上传</title>
</head>
<body>
  <h1>文件上传</h1>
  <form method="POST" action="./upload.php" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="上传">
  </form>
</body>
</html>
// 允许上传的文件类型
$allowTypes = ['jpg', 'jpeg', 'png', 'gif'];

// 允许上传的文件大小,单位:字节
$allowSize = 1024 * 1024 * 2; // 2 MB

// 上传文件保存目录
$uploadDir = './uploads/';

// 获取上传的文件信息
$file = $_FILES['file'];

// 判断文件类型和文件大小
$fileExt = pathinfo($file['name'], PATHINFO_EXTENSION);
$fileSize = $file['size'];
if (!in_array($fileExt, $allowTypes)) { // 文件类型不符
  die('文件类型不允许');
} else if ($fileSize > $allowSize) { // 文件大小超出限制
  die('文件大小超出限制');
}

// 处理上传
if ($file['error'] === UPLOAD_ERR_OK) { // 上传成功
  // 移动文件到指定目录下,并生成新的文件名
  $newFileName = $uploadDir . uniqid() . '.' . $fileExt;
  move_uploaded_file($file['tmp_name'], $newFileName);

  // 输出上传成功信息
  echo '文件上传成功';
} else { // 上传失败
  echo '上传失败:' . $file['error'];
}

PHP实现文件下载

1. PHP处理

文件下载需要使用 header 函数设置响应头信息,指定要下载的文件类型和文件名,并通过 readfile 函数将文件内容输出到客户端。

// 要下载的文件路径
$filePath = './downloads/file.pdf';

// 获取要下载的文件名
$fileName = basename($filePath);

// 设置响应头信息,指定要下载的文件类型和文件名
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $fileName . '"');

// 输出文件内容到客户端
readfile($filePath);

2. 示例说明

以下是一个完整的文件下载示例,其中还包含了文件是否存在和文件权限的检查。

// 要下载的文件路径
$filePath = './downloads/file.pdf';

// 判断文件是否存在,并检查文件权限
if (!file_exists($filePath)) {
  die('文件不存在');
} else if (!is_readable($filePath)) {
  die('文件不可读');
}

// 获取要下载的文件名
$fileName = basename($filePath);

// 设置响应头信息,指定要下载的文件类型和文件名
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $fileName . '"');

// 输出文件内容到客户端
readfile($filePath);

总结

  • 文件上传需要使用HTML表单,并在PHP脚本中使用 $_FILES 变量获取文件上传信息,然后通过 move_uploaded_file 函数将文件保存到目标文件夹。

  • 文件下载需要使用 header 函数设置响应头信息,指定要下载的文件类型和文件名,并通过 readfile 函数将文件内容输出到客户端。

  • 在文件上传和下载的过程中,需要注意文件类型、文件大小和文件权限等问题,以及对与文件名保留的安全规范。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP实现文件上传与下载实例与总结 - Python技术站

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

相关文章

  • php curl选项列表(超详细)

    下面就为你详细讲解 “Php curl选项列表(超详细)” 的攻略。 什么是 Curl? CURL 是一个开源的免费工具,可以在各种操作系统上用来传输或接收文件、数据等。同时, CURL 也是一个非常强大的命令行工具,通过 CURL 可以实现 HTTP、FTP、SMTP、POP3 等协议的请求。 在 PHP 语言中, CURL 也是一个非常重要的扩展,并用于…

    PHP 2023年5月27日
    00
  • 基于PHP+mysql实现新闻发布系统的开发

    下面我将为您详细讲解基于PHP+MySQL实现新闻发布系统的开发攻略。 一、准备工作 在开始开发前,需要做好以下准备工作: 1.安装本地开发环境 在本地搭建PHP开发环境(如WampServer、XAMPP等)和MySQL数据库; 2.选择开发框架 选择一款适合自己的PHP框架,比如Laravel、ThinkPHP等; 3.设计数据库 设计好新闻发布系统所需…

    PHP 2023年5月24日
    00
  • 解析php多线程下载远程多个文件

    解析php多线程下载远程多个文件的完整攻略 PHP多线程下载远程多个文件是一个比较常见的需求,下面提供一种基于PHP的多线程下载方法。 方案概述 本方案基于curl_multi函数实现多线程下载。具体方案如下: 构建curl句柄数组 设置curl选项 执行curl句柄数组 关闭curl句柄数组 代码实现 <?php $maxThreads = 10; …

    PHP 2023年5月27日
    00
  • 基于php数组中的索引数组和关联数组详解

    基于PHP数组中的索引数组和关联数组详解 在PHP中,数组(array)是一种非常重要的数据类型,它能够存储一系列的值,这些值可以是各种类型的数据,如数字、字符串、对象等,并以相应的键(key)进行关联。根据键的类型,PHP数组可以分为两种:索引数组和关联数组。 索引数组 索引数组也称为数字数组,是以数字索引为键的数组。对于索引数组,在PHP里默认将下标从0…

    PHP 2023年5月26日
    00
  • PHP执行linux命令常用函数汇总

    下面我会详细讲解“PHP执行Linux命令常用函数汇总”的完整攻略。 一、背景介绍 在实际开发中,我们经常需要用到PHP执行Linux命令的功能。这项功能可以帮助我们完成一些自动化脚本、文件处理、服务器管理等任务。那么,在PHP中如何执行Linux命令呢?接下来将为您提供详细的攻略。 二、系统函数exec PHP中最常用的执行Linux命令的函数是exec,…

    PHP 2023年5月25日
    00
  • php实现数据库的增删改查

    要实现数据库的增删改查,需要使用PHP语言和数据库管理系统(如MySQL)进行结合。以下是实现步骤的完整攻略: 1. 连接数据库 要使用PHP来操作数据库,您需要连接到数据库。可以使用 mysqli_connect() 函数来连接到MySQL数据库。以下是一个连接到 MySQL 数据库的示例代码: // 数据库信息配置 $servername = &quot…

    PHP 2023年5月23日
    00
  • 国内php原创论坛

    国内PHP原创论坛攻略 前言 国内PHP原创论坛是一个专注于PHP技术交流和学习的网站,拥有大量的PHP开发者和爱好者。以下是关于如何使用该网站的攻略。 注册和登录 初次使用网站需要注册一个账号,可以通过首页的“注册”按钮进行操作。填写完个人信息后,点击“注册”按钮即可完成注册。 完成注册后,登录网站。点击首页右上角的“登录”按钮,输入刚刚注册的账号和密码即…

    PHP 2023年5月23日
    00
  • PHP合并静态文件详解

    PHP合并静态文件详解 在进行 Web 前端开发时,我相信你一定会遇到许多静态资源文件,比如 CSS 样式文件、JavaScript 脚本文件等等,这些文件的文件头冗长,通常会浪费许多带宽,同时也会增加页面加载时间,往往需要进行打包和压缩,而 PHP 合并静态文件是一种非常好的解决方案。 什么是 PHP 合并静态文件 PHP 合并静态文件是一种将多个静态文件…

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