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

时间:2018-05-23 18:18:23

标签: php slim-3

我正在尝试使用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);                    
}

请问我如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

例如添加use子句

use Slim\Http\UploadedFile;

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

或typehint完整的班级名称

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