我正在尝试使用Slim创建一个API端点,允许人们上传图像。然而,我遇到问题,因为我不断收到此错误消息,
“传递给moveUploadedFile()的参数2必须是UploadedFile的实例,Slim \ Http \ UploadedFile的实例给出”
这就是我在做的事情:
$directory = __DIR__.'/uploads';
function moveUploadedFile($directory, UploadedFile $uploadedFile)
{
$extension = pathinfo($uploadedFile->getClientFilename(), PATHINFO_EXTENSION);
// see http://php.net/manual/en/function.random-bytes.php
$basename = bin2hex(random_bytes(8));
$filename = sprintf('%s.%0.8s', $basename, $extension);
$uploadedFile->moveTo($directory . DIRECTORY_SEPARATOR . $filename);
return $filename;
}
$files = $request->getUploadedFiles();
$uploadedFile = $files['photo'];
if ($uploadedFile->getError() === UPLOAD_ERR_OK) {
$filename = moveUploadedFile($directory, $uploadedFile);
}
请问我怎么解决这个问题?
该错误告诉您PHP正在当前命名空间中查找类UploadedFile
,因为您为其添加了typehint。由于当前命名空间中没有名为UploadedFile
的类,因此出现错误。
例如,添加use
子句
use Slim\Http\UploadedFile;
...
function moveUploadedFile($directory, UploadedFile $uploadedFile)
{
...
}
或typehint完整的类名
function moveUploadedFile($directory, Slim\Http\UploadedFile $uploadedFile)
{
...
}