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 操作excel文件的方法小结

    下面是“php 操作excel文件的方法小结”的完整攻略: 一、前言 Microsoft Excel 是一款功能强大的电子表格软件,不仅在办公用途中很常用,而且在数据分析和处理方面也有着很广泛的应用。本文介绍如何使用 PHP 来操作 Excel 文件。 二、操作 Excel 文件 1. 使用 PHPExcel 库 PHPExcel 是 PHP 操作 Exce…

    PHP 2023年5月26日
    00
  • PHP检测数据类型的几种方法(总结)

    下面是详细的攻略: PHP检测数据类型的几种方法(总结) 在PHP中,检测数据类型是开发中常见的操作。下面是几种PHP检测数据类型的方法: 方法一:使用gettype()函数 gettype()函数可以返回一个给定变量的类型。例如: <?php $str = ‘hello’; echo gettype($str); // 输出:string ?>…

    PHP 2023年5月26日
    00
  • PHP实现倒计时功能

    下面是PHP实现倒计时功能的完整攻略。 步骤一:定义倒计时结束时间 首先,你需要定义倒计时结束的时间,可以用PHP中的date()函数进行定义。比如,我们定义倒计时结束时间为2022年1月1日 00:00:00。 $endtime = strtotime(‘2022-01-01 00:00:00’); 步骤二:计算倒计时剩余时间 接下来,你需要计算倒计时剩余…

    PHP 2023年5月27日
    00
  • php 类自动载入的方法

    PHP类自动载入是指,在使用PHP程序时,当需要调用某个类时,如果该类没有被引入,则会自动执行一个加载该类的函数,从而实现自动载入。常见的PHP类自动载入方法有三种: 1.函数式自动载入方法 这种方法是通过调用一个函数来实现载入类的过程。具体实现代码如下: function autoload($classname){ include($classname .…

    PHP 2023年5月23日
    00
  • php 分页原理详解

    下面我就来详细讲解一下 “php 分页原理详解”。 认识分页 数据量越来越大的时候,需要对数据进行分页显示,其目的是为了方便用户阅读和提高用户体验。在Web网页中,我们经常用到的分页效果就是点击页码按钮,按照每页设定的大小展示不同页数的数据。 分页原理 在进行数据分页的时候,需要经过如下几个步骤: 获取总数据条目数 通常情况下,我们需要先获取所有数据的记录总…

    PHP 2023年5月27日
    00
  • PHP CURL模拟GET及POST函数代码

    下面是详细讲解“PHP CURL模拟GET及POST函数代码”的完整攻略: 1. 什么是CURL? CURL 全称为“Client URL Library”,是一个用来发出 HTTP 请求的工具和库。它支持多种协议,包括 HTTP、FTP、SMTP 等等。在 PHP 中,我们可以通过使用 CURL 库来发出 HTTP 请求,包括 GET 和 POST 请求。…

    PHP 2023年5月25日
    00
  • 微信小程序-form表单提交代码实例

    微信小程序-form表单提交代码实例攻略 在微信小程序中,我们可以使用form表单来收集用户的信息,并将其提交到指定的接口进行处理。本文将详细讲解如何创建和使用form表单,在提交数据时如何处理和验证数据,以及如何处理提交的结果。 创建form表单 要创建一个form表单,我们需要在wxml文件中使用form标签,例如: <form bindsubmi…

    PHP 2023年5月23日
    00
  • PHP实现根据数组的值进行分组的方法

    实现根据数组的值进行分组的方法,可以借助PHP自带的函数array_reduce()和array_merge()。具体步骤如下: 定义初始结果数组 通过array_reduce()函数对数组进行遍历,将结果放入一个初始化的空数组中。 $groups = array_reduce($arr, function($result, $item) { … ret…

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