php文件上传及下载附带显示文件及目录功能

PHP文件上传及下载附带显示文件及目录功能是web开发中常见的一个功能,下面我将结合相关代码,详细讲解这个功能的完成过程:

PHP文件上传及下载附带显示文件及目录功能是web开发中常见的一个功能,下面我将结合相关代码,详细讲解这个功能的完成过程:

一、文件上传

文件上传是指将本地电脑上的文件上传到服务器端,以下是实现文件上传的步骤:

1.创建上传表单

在HTML中创建一个form表单,其中enctype属性设置为multipart/form-data,表示这是一个带文件上传的表单:

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

2.处理上传文件

在服务器端的PHP代码中处理上传的文件,使用php的内置函数move_uploaded_file进行文件上传,下面是一个上传文件的php代码示例:

if ($_FILES["file"]["error"] > 0) {
    echo "错误:" . $_FILES["file"]["error"] . "<br>";
} else {
    if (file_exists("upload/" . $_FILES["file"]["name"])) {
        echo $_FILES["file"]["name"] . "已经存在。";
    } else {
        move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
        echo "文件已经保存到: upload/" . $_FILES["file"]["name"];
    }
}

3.上传文件的存储

上传的文件一般保存在服务器端,这里我们创建一个upload目录,通过move_uploaded_file函数将上传的文件保存在该目录下。如果文件已经存在,则不进行保存并提示用户该文件已经存在。

二、文件下载

文件下载是指从服务器端下载文件到本地电脑,以下是实现文件下载的步骤:

1.创建下载链接

在HTML中创建一个链接,点击链接即可下载文件,链接的href属性是一个指向服务器端php文件的url,该php文件负责文件下载的处理:

<a href="download.php?file=文件名">文件下载</a>

2.处理下载文件

在服务器端的PHP代码中处理下载文件,使用php的内置函数readfile进行文件下载,下面是一个下载文件的php代码示例:

$file = "upload/".$_GET['file'];  //获取要下载的文件名

header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=".basename($file));
header("Content-Length: ".filesize($file));
readfile($file);
exit();

三、显示文件及目录

以下是显示文件及目录的步骤:

1.显示当前目录下的文件和目录

在服务器端的PHP代码中使用PHP的内置函数scandir获取当前目录下的文件列表,使用foreach循环输出。

$base_path = 'upload/';
$filesnames = scandir($base_path);
foreach ($filesnames as $name) {
    if ($name != '.' && $name != '..') {
        echo $name . '<br/>';
    }
}

2.显示指定目录下的文件和目录

加入一个参数dir,用来指定要显示的目录,代码如下:

$dir = isset($_GET['dir']) ? $_GET['dir'] : '';
$base_path = 'upload/' . $dir;
$filesnames = scandir($base_path);
foreach ($filesnames as $name) {
    if ($name != '.' && $name != '..') {
        if (is_dir($base_path . '/' . $name)) {
            echo "<a href='?dir=$dir/$name'>$name</a><br/>";
        } else {
            echo $name . '<br/>';
        }
    }
}

在这段代码中,我们加入了当前目录的参数dir,如要显示的是upload目录下的文件或文件夹,则dir传递的是空值。如果要显示upload目录下的子目录或文件,则传递相应文件夹名字。

本文标题为:php文件上传及下载附带显示文件及目录功能

基础教程推荐