# Api upload a file

**URL:** <https://discourse.slimframework.com/t/api-upload-a-file/2447>\
**Category:** Questions\
**Created:** [June 3, 2018, 6:27pm UTC](https://discourse.slimframework.com/t/api-upload-a-file/2447 "2018-06-03T18:27:14Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![oZAx](https://avatars.discourse-cdn.com/v4/letter/o/50afbb/32.png) [@oZAx](https://discourse.slimframework.com/u/oZAx)\
**Post date:** [June 3, 2018, 6:27pm UTC](https://discourse.slimframework.com/t/api-upload-a-file/2447/1 "2018-06-03T18:27:14Z")

</div>

Hello,

i’m new to slim, i’m working on a project where i need to register , retrieve clients et , i’v done that all good but now i’m trying to manage files upload , just to be clear i am consuming the api with another php application.

so for now i got this error :

Details  
Type: Error  
Message: Call to a member function getError() on null  
File: C:\xampp\htdocs\API\_supfile\index.php  
Line: 82  
Trace  
#0 [internal function]: Closure-\>{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response), Array)  
#1 C:\xampp\htdocs\API\_supfile\vendor\slim\slim\Slim\Handlers\Strategies\RequestResponse.php(41): call\_user\_func(Object(Closure), Object(Slim\Http\Request), Object(Slim\Http\Response), Array)  
#2 C:\xampp\htdocs\API\_supfile\vendor\slim\slim\Slim\Route.php(335): Slim\Handlers\Strategies\RequestResponse-\>\_\_invoke(Object(Closure), Object(Slim\Http\Request), Object(Slim\Http\Response), Array)  
#3 C:\xampp\htdocs\API\_supfile\vendor\slim\slim\Slim\MiddlewareAwareTrait.php(117): Slim\Route-\>\_\_invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))  
#4 C:\xampp\htdocs\API\_supfile\vendor\slim\slim\Slim\Route.php(313): Slim\Route-\>callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))  
#5 C:\xampp\htdocs\API\_supfile\vendor\slim\slim\Slim\App.php(513): Slim\Route-\>run(Object(Slim\Http\Request), Object(Slim\Http\Response))  
#6 C:\xampp\htdocs\API\_supfile\src\spfile\middleware\logging.php(11): Slim\App-\>\_\_invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))  
#7 [internal function]: spfile\middleware\Logging-\>\_\_invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App))  
#8 C:\xampp\htdocs\API\_supfile\vendor\slim\slim\Slim\DeferredCallable.php(43): call\_user\_func\_array(Object(spfile\middleware\Logging), Array)  
#9 [internal function]: Slim\DeferredCallable-\>\_\_invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App))  
#10 C:\xampp\htdocs\API\_supfile\vendor\slim\slim\Slim\MiddlewareAwareTrait.php(70): call\_user\_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\App))  
#11 C:\xampp\htdocs\API\_supfile\vendor\slim\slim\Slim\MiddlewareAwareTrait.php(117): Slim\App-\>Slim{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response))  
#12 C:\xampp\htdocs\API\_supfile\vendor\slim\slim\Slim\App.php(406): Slim\App-\>callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))  
#13 C:\xampp\htdocs\API\_supfile\vendor\slim\slim\Slim\App.php(314): Slim\App-\>process(Object(Slim\Http\Request), Object(Slim\Http\Response))  
#14 C:\xampp\htdocs\API\_supfile\index.php(105): Slim\App-\>run()  
#15 {main}

This is the code:

$app-\>post(’/photo’, function (Request $request, Response $response) {

```
    $directory = $this->get('upload_directory');

```

echo 'hi ';  
$uploadedFiles = $request-\>getUploadedFiles();

```
    $uploadedFile = $uploadedFiles['picture'];
    if($uploadedFile->getError() === UPLOAD_ERR_OK) {
        $filename = moveUploadedFile($directory, $uploadedFile);
        $response->write('uploaded ' . $filename . '<br/>');
    }

});

```

function moveUploadedFile($directory, UploadedFile $uploadedFile){  
$extension = pathinfo($uploadedFile-\>getClientFilename(),  
PATHINFO\_EXTENSION);  
$basename = bin2hex(random\_bytes(8));  
$filename = sprintf(’%s.%0.8s’, $basename, $extension);  
$uploadedFile-\>moveTo($directory . DIRECTORY\_SEPARATOR . $filename);

```
return $filename;

```

}

---

<div class="post-metadata">

**Author:** ![victor](https://avatars.discourse-cdn.com/v4/letter/v/3e96dc/32.png) [@victor](https://discourse.slimframework.com/u/victor)\
**Post date:** [June 4, 2018, 9:54pm UTC](https://discourse.slimframework.com/t/api-upload-a-file/2447/2 "2018-06-04T21:54:59Z")

</div>

The error is telling you that variable _$uploadedFile_ is null. If you are uploading files means that html form isn’t sending files.
