使用Slim框架上传图像时出错

问题描述 投票:0回答:1

我正在尝试使用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 slim-3
1个回答
1
投票

该错误告诉您PHP正在当前命名空间中查找类UploadedFile,因为您为其添加了typehint。由于当前命名空间中没有名为UploadedFile的类,因此出现错误。

例如,添加use子句

use Slim\Http\UploadedFile;

...
function moveUploadedFile($directory,  UploadedFile $uploadedFile)
{
    ...
}

或typehint完整的类名

function moveUploadedFile($directory,  Slim\Http\UploadedFile $uploadedFile)
{
    ...
}
© www.soinside.com 2019 - 2024. All rights reserved.