欢迎访问宙启技术站
智能推送

PHP文件上传和下载函数的实例演示

发布时间:2023-11-18 04:01:59

文件上传和下载是Web开发中常见的功能之一。在PHP中,可以使用文件上传函数move_uploaded_file()来实现文件上传,使用文件下载函数readfile()来实现文件下载。

首先,我们来看一下文件上传的实例演示:

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

<?php
if(isset($_FILES['file'])) {
  $file = $_FILES['file'];
  
  $name = $file['name']; // 获取文件名
  $temp = $file['tmp_name']; // 获取上传后的临时文件路径
  
  // 将文件移动到指定目录
  move_uploaded_file($temp, 'uploads/' . $name);
  
  echo '文件上传成功!';
}
?>

在上述代码中,首先我们创建了一个表单,并将其action属性设置为upload.php,指定了文件上传的处理文件。表单中的enctype属性必须设置为multipart/form-data,以支持文件上传。

当用户点击提交按钮时,表单数据将会被发送到upload.php文件进行处理。在upload.php文件中,首先使用isset()函数判断是否存在$_FILES数组中的file元素。如果存在,则表示用户已经选择了要上传的文件。

我们可以通过$_FILES['file']来获取上传文件的信息。name属性表示上传的文件名,tmp_name属性表示上传后的临时文件路径。

然后,我们使用move_uploaded_file()函数将上传的文件移动到指定的目录中。move_uploaded_file()函数有两个参数, 个参数是上传后的临时文件路径,第二个参数是文件移动的目标路径。

最后,我们输出一个提示信息表示文件上传成功。

接下来,我们来看一下文件下载的实例演示:

<?php
$file = 'downloads/file.txt'; // 要下载的文件路径

if(file_exists($file)) {
  // 设置响应头,告诉浏览器文件的类型和大小,并强制下载
  header('Content-Description: File Transfer');
  header('Content-Type: application/octet-stream');
  header('Content-Disposition: attachment; filename=' . basename($file));
  header('Content-Transfer-Encoding: binary');
  header('Expires: 0');
  header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  header('Pragma: public');
  header('Content-Length: ' . filesize($file));
  
  // 读取文件内容并输出给浏览器
  readfile($file);
} else {
  echo '文件不存在!';
}
?>

在上述代码中,我们首先指定了要下载的文件路径。然后,使用file_exists()函数判断文件是否存在。

如果文件存在,我们需要设置一些响应头信息,以告诉浏览器文件的类型、大小和下载方式。这些响应头信息可以通过header()函数来设置。

最后,我们使用readfile()函数读取文件内容,并输出给浏览器进行下载。

如果文件不存在,则输出一个提示信息表示文件不存在。

综上所述,上述代码演示了PHP文件上传和下载函数的用法。通过这些函数,我们可以方便地实现文件上传和下载的功能。