我有一个处理图像上传的简单控制器。在将图像/文件保存到最终目的地之前,我想验证该文件的mimeType。
我的控制器使用Psr\Http\Message\ServerRequestInterface
并调用getUploadedFiles()
来获取上传的文件作为Psr\Http\Message\UploadedFileInterface
的实例。
在该接口的实例上,我现在可以调用getClientMediaType()
以获得mime类型。
我的问题是文档明确声明不信任该值!
因此,我想使用mime_content_type()
检测mimeType,但无法从该接口获取实际的文件名。
我看到两个选择:
这是我的控制器的缩写版本:
public function handleUpload(ServerRequestInterface $request, ResponseInterface $response) {
$files = $request->getUploadedFiles();
/** @var UploadedFile $uploadedFile */
$uploadedFile = $files[0];
$fileType = $uploadedFile->getClientMediaType(); // This need to be replaced !
if (!in_array($fileType, self::VALID_IMAGE_MIME_TYPE)) {
// return error
}
// do stuff
}
在从UploadedFileInterface获取tmp_name上是否没有方法?是否有另一种最佳实践来进行这种验证?这似乎是一个非常明显的问题,所以我想我缺少一些基本的东西。