jensostertag/uploadhelper

一个用于处理上传文件的 PHP 库

1.0.0 2023-07-14 05:08 UTC

This package is not auto-updated.

Last update: 2024-09-23 17:32:30 UTC


README

这是一个 PHP 辅助库,用于帮助处理上传文件。

PHP 将上传文件存储在 $_FILES 数组中。然而,这个数组并不容易用于多个文件的上传。这个库提供了一种简单的方式来检查是否允许文件上传,并以更方便的方式获取文件。

安装

要安装此库,请使用 composer 将其包含到项目中

{
    "require": {
        "jensostertag/uploadhelper": "1.0.0"
    }
}

使用方法

上传单个文件

以下示例展示了如何允许上传单个文件。

假设你有一个名为 fileInputName 的文件输入表单

<form method="post" enctype="multipart/form-data">
    <input type="file" name="fileInputName" id="file">
    <input type="submit" value="Upload">
</form>

在表单提交时调用的 PHP 脚本中,使用 UploadHelper 类来检查是否允许文件上传以及获取上传的文件

$uploadHelper = new UploadHelper();

// File Upload Options
$uploadHelper->setInputName("fileInputName") // Set the Name of the File Input
             ->setMultiple(false) // Only allow a single File
             ->setAllowedMimeTypes(["image/jpeg", "image/png"]) // Only allow JPEG and PNG Files
             ->setMaxSize(2) // Only allow Files up to 2 MiB
             ->handleUploadedFiles();

// Check if there were Errors during the Upload
if(!($uploadHelper->successful())) {
    $errors = $uploadHelper->getErrors();
    return;
}

// Get the uploaded File
$uploadedFile = $uploadHelper->getUploadedFiles();

如果文件上传成功,则 $uploadedFile 将是一个具有以下结构的数组

[
    [0] => [
        "name" => "file.jpeg",
        "type" => "image/jpeg",
        "tmp_name" => "/tmp/php/php1h4j1o",
        "error" => 0,
        "size" => 1024
    ]
]
上传多个文件

以下示例展示了如何允许上传多个文件。

假设你有一个名为 fileInputName 的文件输入表单,设置了 multiple 属性

<form method="post" enctype="multipart/form-data">
    <input type="file" name="fileInputName" id="file" multiple>
    <input type="submit" value="Upload">
</form>

在表单提交时调用的 PHP 脚本中,使用 UploadHelper 类来检查是否允许文件上传以及获取上传的文件

$uploadHelper = new UploadHelper();

// File Upload Options
$uploadHelper->setInputName("fileInputName") // Set the Name of the File Input
             ->setMultiple(true) // Allow multiple Files
             ->setAllowedMimeTypes(["image/jpeg", "image/png"]) // Only allow JPEG and PNG Files
             ->setMaxSize(2) // Only allow Files up to 2 MiB
             ->handleUploadedFiles();

// Check if there were Errors during the Upload
if(!($uploadHelper->successful())) {
    $errors = $uploadHelper->getErrors();
    return;
}

// Get the uploaded Files
$uploadedFiles = $uploadHelper->getUploadedFiles();

如果文件上传成功,则 $uploadedFiles 将是一个具有以下结构的数组

[
    [0] => [
        "name" => "file1.jpeg",
        "type" => "image/jpeg",
        "tmp_name" => "/tmp/php/php1h4j1o",
        "error" => 0,
        "size" => 1024
    ],
    [1] => [
        "name" => "file2.jpeg",
        "type" => "image/jpeg",
        "tmp_name" => "/tmp/php/php1h4j1o",
        "error" => 0,
        "size" => 1024
    ],
    // ...
]
文件上传选项

可以为文件上传设置以下选项

上传错误

你可以使用 successful() 方法检查文件上传过程中是否有错误。如果没有错误,它返回 true;如果有至少一个错误,它返回 false

在文件上传过程中发生的错误可以通过 getErrors() 方法检索。它以 UploadError 类的枚举值返回它们。以下错误类型: