php文件上传简单实现方法

下面是关于PHP文件上传简单实现方法的攻略,包含过程细节和两个具体示例:

下面是关于PHP文件上传简单实现方法的攻略,包含过程细节和两个具体示例:

1. 使用HTML表单创建上传文件控件

在HTML表单中加入文件上传控件,这样可以让用户选取需要上传的文件。表单中主要包含以下内容:

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

其中,action属性指定上传文件的目标地址,method属性指定表单的提交方式,enctype属性指定表单的编码类型为multipart/form-data,这样表单内容才能被正确解析。

2. 使用PHP编写上传文件处理脚本

上传文件处理脚本需要检查文件是否合法、移动文件到指定目录、并输出上传结果信息。具体步骤如下:

2.1 检查上传文件是否合法

对于上传的文件,需要进行一些必要的验证,例如文件大小、类型、存储路径等。可以使用$_FILES数组来获取上传的文件信息,然后进行验证。

$file = $_FILES['fileToUpload'];
$target_dir = "uploads/";
$target_file = $target_dir . basename($file["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));

//检查文件大小,如果大于1MB则拒绝上传
if ($file["size"] > 1000000) {
    echo "文件太大,无法上传。";
    $uploadOk = 0;
}

//检查文件类型,只允许上传图片类型
if ( $imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "只允许上传 JPG, JPEG, PNG 和 GIF 格式的文件。";
    $uploadOk = 0;
}

2.2 移动上传文件到指定目录

如果验证通过,则可以将上传的文件移动到指定目录。在PHP中,可以使用move_uploaded_file函数来实现。

if ($uploadOk == 1) {
    if (move_uploaded_file($file["tmp_name"], $target_file)) {
        echo "文件 " . basename($file["name"]) . " 上传成功。";
    } else {
        echo "发生了错误,无法上传文件。";
    }
}

3.2 示例1: 上传单个文件并重命名

下面是一个完整的示例,演示如何上传单个文件并给文件重命名。

upload.php文件代码:

<?php
if(isset($_POST["submit"])) {
    $file = $_FILES["fileToUpload"];
    $target_dir = "uploads/";
    $target_file = $target_dir . uniqid() . '-' . basename($file["name"]);
    $uploadOk = 1;
    $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));

    // 检查文件大小
    if ($file["size"] > 1000000) {
        echo "文件太大,无法上传。";
        $uploadOk = 0;
    }

    // 检查文件类型,只允许上传图片类型
    if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif") {
        echo "只允许上传 JPG, JPEG, PNG 和 GIF 格式的文件。";
        $uploadOk = 0;
    }

    // 移动上传的文件到指定目录
    if ($uploadOk == 1) {
        if (move_uploaded_file($file["tmp_name"], $target_file)) {
            echo "文件 " . basename($file["name"]) . " 上传成功。";
        } else {
            echo "发生了错误,无法上传文件。";
        }
    }
}
?>

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

此示例中,使用了uniqid()函数给上传的文件生成一个唯一的文件名,避免了同名文件的覆盖问题。

3.3 示例2: 上传多个文件

下面是一个完整的示例,演示如何上传多个文件。

upload.php文件代码:

<?php
if(isset($_POST["submit"])) {
    $target_dir = "uploads/";
    $uploadOk = 1;

    // 遍历上传的文件
    foreach ($_FILES["filesToUpload"]["error"] as $key => $error) {
        // 检查上传的文件是否有错
        if ($error == UPLOAD_ERR_OK) {
            $file = $_FILES["filesToUpload"]["name"][$key];
            $target_file = $target_dir . uniqid() . '-' . basename($file);
            $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));

            // 检查文件大小
            if ($_FILES["filesToUpload"]["size"][$key] > 1000000) {
                echo "文件太大,无法上传。";
                $uploadOk = 0;
            }

            // 检查文件类型,只允许上传图片类型
            if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif") {
                echo "只允许上传 JPG, JPEG, PNG 和 GIF 格式的文件。";
                $uploadOk = 0;
            }

            // 移动上传的文件到指定目录
            if ($uploadOk == 1) {
                if (!move_uploaded_file($_FILES["filesToUpload"]["tmp_name"][$key], $target_file)) {
                    echo "发生了错误,无法上传文件。";
                    $uploadOk = 0;
                }
            }
        }
    }

    if ($uploadOk == 1) {
        echo "所有文件上传成功。";
    }
}
?>

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

此示例中,使用了multiple属性让上传控件支持选择多个文件,接着使用了foreach循环遍历上传的文件,并对每个文件进行检查和处理,最后输出上传结果信息。

结语

通过以上步骤和两个具体示例,我们可以实现简单的文件上传功能。当然,实际情况还需要根据具体需求进行更详细的调整和优化。

本文标题为:php文件上传简单实现方法

基础教程推荐