/**
  * {@inheritdoc}
  */
 public function upload($filePath, $mimeType, $size)
 {
     $fileHash = $this->factory->createFileHash($filePath);
     $chunks = array();
     $this->fileSplitter->split($filePath, function ($index, $data) use(&$chunks) {
         $chunk = $this->uploadChunk($data);
         $chunks[$index] = $this->chunkManager->downloadProxy($chunk->getHash());
         // unset chunk to save memory
         unset($chunk);
     });
     $file = new ChunkFile();
     $file->setHash($fileHash);
     $file->setSize($size);
     $file->setMimetype($mimeType);
     $file->setChunks($chunks);
     return $file;
 }