kodus/tempkit-fs

该软件包已被弃用且不再维护。作者建议使用 kodus/tempkit 软件包。

实现服务器端策略,用于收集和恢复 PSR-7 上传文件对象

dev-master 2017-09-08 12:26 UTC

This package is auto-updated.

Last update: 2023-01-26 15:04:24 UTC


README

本软件包实现服务器端策略,用于临时收集和恢复作为 PSR-7 UploadedFile 对象存储在 Flysystem 文件系统中的文件。

这是 kodus/tempkit 的分支,它使用 PHP 的常规文件系统 API 实现相同的功能。

PHP Version

您可以使用此服务实现控制器,收集浏览器异步提交的上传文件,并返回临时文件 UUID,然后完成时恢复上传文件并将它们移动到永久存储。

将保留文件名和 MIME 类型(由客户端提交)。

未恢复的文件将在定义的过期期限后自动刷新。

使用方法

使用现有的 Flysystem FilesystemInterface 实例启动服务

$service = new TempFileService($filesystem, __DIR__ . '/temp');

在您的异步 file 上传控制器中,收集提交的文件并返回 UUID

$uuids = [];

foreach ($request->getUploadedFiles() as $file) {
    $uuids[] = $service->collect($file);
}

echo json_encode($uuids);

在您的 form 提交控制器中,恢复收集的文件

foreach ($uuids as $uuid) {
    $file = $service->recover($uuid);

    // get information about recovered file:

    $filename = $file->getClientFilename();
    $media_type = $file->getClientMediaType();

    // move recovered file into permanent storage:

    $file->moveTo(__DIR__ . '/files/' . $file->getClientFilename());
}

请注意,如果您不刷新临时文件,它将在定义的过期期限后当然会被垃圾回收。

此外,如果您手动重命名或移动临时文件,JSON 元数据文件将在 TempFile 实例销毁时立即为您收集和刷新。

有关内联文档,请参阅 TempFileService