kodus / tempkit-fs
dev-master
2017-09-08 12:26 UTC
Requires
- php: >= 7
- kodus/uuid-v4: ^1.1
- league/flysystem: ^1
- psr/http-message: ^1.0
Requires (Dev)
This package is auto-updated.
Last update: 2023-01-26 15:04:24 UTC
README
本软件包实现服务器端策略,用于临时收集和恢复作为 PSR-7 UploadedFile
对象存储在 Flysystem 文件系统中的文件。
这是 kodus/tempkit
的分支,它使用 PHP 的常规文件系统 API 实现相同的功能。
您可以使用此服务实现控制器,收集浏览器异步提交的上传文件,并返回临时文件 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
实例销毁时立即为您收集和刷新。