popphp/pop-file

该包已被废弃且不再维护。未建议替代包。

Pop PHP 框架的 Pop File 组件

2.1.0p1 2017-03-02 15:16 UTC

This package is auto-updated.

Last update: 2022-02-01 12:42:28 UTC


README

生命周期结束

pop-file 组件 v2.1.0 已生命周期结束。上传和 dir 子组件已被分支并推送到其他仓库

  • popphp/pop-http (现在为 Pop\Http\Upload 类)
  • popphp/pop-dir (现在为 Pop\Dir\Dir 类)

Build Status Coverage Status

概述

pop-file 是一个用于管理文件上传和轻松遍历目录中文件的组件。在文件上传方面,您可以设置细粒度控制来管理特定的上传参数,如文件类型和文件大小。您还可以递归地遍历目录。

pop-filePop PHP 框架 的一个组件。

安装

使用 Composer 安装 pop-file

composer require popphp/pop-file

基本用法

文件上传

基本文件上传
use Pop\File\Upload;

$upload = new Upload('/path/to/uploads');
$upload->useDefaults();

$upload->upload($_FILES['file_upload']);

// Do something with the newly uploaded file
if ($upload->isSuccess()) {
    $file = $upload->getUploadedFile();
} else {
    echo $upload->getErrorMessage();
}

以上代码创建上传对象,设置上传路径并设置基本默认值,包括最大文件大小为 10MB,以及允许的常见文件类型和常见不允许的文件类型数组。

文件上传名称和覆盖

默认情况下,文件上传对象不会覆盖同名文件。在上面的例子中,如果 $_FILES['file_upload']['name'] 设置为 'my_document.docx' 且该文件已存在于上传路径中,它将被重命名为 'my_document_1.docx'。

如果您想启用文件覆盖,可以这样做

$upload->overwrite(true);

您还可以在上传时直接给文件指定一个名称,如下所示

$upload->upload($_FILES['file_upload'], 'my-custom-filename.docx');

如果您需要首先检查文件名是否重复,可以使用 checkFilename 方法。如果文件名存在,它将在文件名末尾添加 '_1',或者循环直到找到一个尚不存在的数字 (_#)。如果文件名尚不存在,它将返回原始名称。

$filename = $upload->checkFilename('my-custom-filename.docx');

// $filename is set to 'my-custom-filename_1.docx'
$upload->upload($_FILES['file_upload'], $filename);

目录遍历

遍历目录
use Pop\File\Dir;

$dir = new Dir('my-dir');

foreach ($dir->getFiles() as $file) {
    echo $file;
}

如果您想递归遍历目录并获取每个文件的完整路径。

use Pop\File\Dir;

$dir = new Dir('my-dir', [
    'absolute'  => true,
    'recursive' => true
]);

foreach ($dir->getFiles() as $file) {
    echo $file;
}

可选的布尔选项为 $options 数组参数

  • 'absolute' => 将目录中项目的绝对、完整路径存储
  • 'relative' => 将目录中项目的相对路径存储
  • 'recursive' => 递归遍历目录
  • 'filesOnly' => 仅存储对象中的文件(而不是其他目录)
清空目录
use Pop\File\Dir;

$dir = new Dir('my-dir');
$dir->emptyDir(true);

true标志将同时删除实际目录。