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

更方便的文件上传:10个PHP文件上传函数

发布时间:2023-07-04 13:02:48

在Web开发中,文件上传是一项常见的任务。可以利用PHP编写函数来实现文件上传,这样可以使代码更模块化和可重用。以下是10个常用的PHP文件上传函数:

1. uploadFile()

这个函数用于上传单个文件。它接收三个参数:文件表单字段的名称、目标路径和允许的文件扩展名。该函数会检查文件类型和大小,并将文件移动到目标路径。

function uploadFile($field_name, $target_path, $allowed_extensions) {
    $file_name = $_FILES[$field_name]['name'];
    $file_tmp = $_FILES[$field_name]['tmp_name'];
    $file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));

    if (in_array($file_ext, $allowed_extensions)) {
        if (move_uploaded_file($file_tmp, $target_path.'/'.$file_name)) {
            echo '文件上传成功!';
        } else {
            echo '文件上传失败!';
        }
    } else {
        echo '不允许的文件扩展名!';
    }
}

2. uploadMultipleFiles()

这个函数可以上传多个文件,它接收两个参数:目标路径和允许的文件扩展名。与uploadFile()函数类似,它会检查每个文件的类型和大小,并将它们移动到目标路径。

function uploadMultipleFiles($target_path, $allowed_extensions) {
    foreach ($_FILES['files']['tmp_name'] as $key => $tmp_name) {
        $file_name = $_FILES['files']['name'][$key];
        $file_tmp = $tmp_name;
        $file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));

        if (in_array($file_ext, $allowed_extensions)) {
            if (move_uploaded_file($file_tmp, $target_path.'/'.$file_name)) {
                echo $file_name.' 文件上传成功!<br>';
            } else {
                echo $file_name.' 文件上传失败!<br>';
            }
        } else {
            echo $file_name.' 不允许的文件扩展名!<br>';
        }
    }
}

3. uploadFileWithRename()

这个函数与uploadFile()函数类似,但它会给上传的文件重命名,以避免文件名冲突。

function uploadFileWithRename($field_name, $target_path, $allowed_extensions) {
    $file_name = $_FILES[$field_name]['name'];
    $file_tmp = $_FILES[$field_name]['tmp_name'];
    $file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
    $new_file_name = uniqid().'.'.$file_ext;

    if (in_array($file_ext, $allowed_extensions)) {
        if (move_uploaded_file($file_tmp, $target_path.'/'.$new_file_name)) {
            echo '文件上传成功!';
        } else {
            echo '文件上传失败!';
        }
    } else {
        echo '不允许的文件扩展名!';
    }
}

4. uploadImage()

这个函数用于上传图片文件,并针对图片类型进行一些额外的检查,如宽度、高度和文件大小。

function uploadImage($field_name, $target_path, $allowed_extensions, $max_width = 500, $max_height = 500, $max_size = 1000000) {
    $file_name = $_FILES[$field_name]['name'];
    $file_tmp = $_FILES[$field_name]['tmp_name'];
    $file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));

    list($width, $height) = getimagesize($file_tmp);

    if (in_array($file_ext, $allowed_extensions)) {
        if ($width <= $max_width && $height <= $max_height && $_FILES[$field_name]['size'] <= $max_size) {
            if (move_uploaded_file($file_tmp, $target_path.'/'.$file_name)) {
                echo '图片上传成功!';
            } else {
                echo '图片上传失败!';
            }
        } else {
            echo '图片尺寸或大小超过限制!';
        }
    } else {
        echo '不允许的图片文件扩展名!';
    }
}

5. uploadImageWithResize()

这个函数与uploadImage()函数类似,但它会自动调整图片大小以适应指定的宽度和高度。

function uploadImageWithResize($field_name, $target_path, $allowed_extensions, $max_width = 500, $max_height = 500, $max_size = 1000000) {
    $file_name = $_FILES[$field_name]['name'];
    $file_tmp = $_FILES[$field_name]['tmp_name'];
    $file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));

    list($width, $height) = getimagesize($file_tmp);

    if (in_array($file_ext, $allowed_extensions)) {
        if ($width <= $max_width && $height <= $max_height && $_FILES[$field_name]['size'] <= $max_size) {
            $image = resizeImage($file_tmp, $width, $height, $max_width, $max_height);

            if (imagejpeg($image, $target_path.'/'.$file_name)) {
                echo '调整大小后的图片上传成功!';
            } else {
                echo '调整大小后的图片上传失败!';
            }

            imagedestroy($image);
        } else {
            echo '图片尺寸或大小超过限制!';
        }
    } else {
        echo '不允许的图片文件扩展名!';
    }
}

function resizeImage($file_tmp, $width, $height, $max_width, $max_height) {
    $image = imagecreatefromjpeg($file_tmp);

    if ($width > $max_width || $height > $max_height) {
        $new_width = $max_width;
        $new_height = $max_height;

        if ($width > $height) {
            $new_height = ($max_width / $width) * $height;
        } else {
            $new_width = ($max_height / $height) * $width;
        }

        $new_image = imagecreatetruecolor($new_width, $new_height);

        imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

        return $new_image;
    }

    return $image;
}

6. uploadVideo()

这个函数用于上传视频文件,并可以检查文件类型和大小。

function uploadVideo($field_name, $target_path, $allowed_extensions, $max_size = 100000000) {
    $file_name = $_FILES[$field_name]['name'];
    $file_tmp = $_FILES[$field_name]['tmp_name'];
    $file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));

    if (in_array($file_ext, $allowed_extensions)) {
        if ($_FILES[$field_name]['size'] <= $max_size) {
            if (move_uploaded_file($file_tmp, $target_path.'/'.$file_name)) {
                echo '视频上传成功!';
            } else {
                echo '视频上传失败!';
            }
        } else {
            echo '视频文件大小超过限制!';
        }
    } else {
        echo '不允许的视频文件扩展名!';
    }
}

7. uploadAudio()

这个函数用于上传音频文件,并可以检查文件类型和大小。

function uploadAudio($field_name, $target_path, $allowed_extensions, $max_size = 5000000) {
    $file_name = $_FILES[$field_name]['name'];
    $file_tmp = $_FILES[$field_name]['tmp_name'];
    $file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));

    if (in_array($file_ext, $allowed_extensions)) {
        if ($_FILES[$field_name]['size'] <= $max_size) {
            if (move_uploaded_file($file_tmp, $target_path.'/'.$file_name)) {
                echo '音频上传成功!';
            } else {
                echo '音频上传失败!';
            }
        } else {
            echo '音频文件大小超过限制!';
        }
    } else {
        echo '不允许的音频文件扩展名!';
    }
}

8. uploadExcel()

这个函数用于上传Excel文件,并可以检查文件类型和大小。

`php

function uploadExcel($field_name, $target_path, $allowed_extensions, $max_size = 5000000) {

$file_name = $_FILES[$field_name]['name'];

$file_tmp = $_FILES[$field_name]['tmp_name'];

$file_ext = strtolower(pathinfo