shekwo
shekwo

Reputation: 1447

Error uploading images using Slim framework

I am trying to create an API endpoint using Slim that allows people upload images. I am however having issues as I keep getting this error message,

"Argument 2 passed to moveUploadedFile() must be an instance of UploadedFile, instance of Slim\Http\UploadedFile given"

This is what I am doing:

$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);                    
}

Please how I solve this?

Upvotes: 1

Views: 1420

Answers (1)

Zamrony P. Juhara
Zamrony P. Juhara

Reputation: 5262

The error tells you that PHP is looking for class UploadedFile in current namespace because you add typehint for it. Since there is no class named UploadedFile in your current namespace, hence the error.

Add use clause for example

use Slim\Http\UploadedFile;

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

or typehint full class name

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

Upvotes: 3

Related Questions