protected function movePhpUploadTmpFiles(array $upload)
    {
        $asArray     = is_array($upload['tmp_name']);
        $tmpFiles    = (array) $upload['tmp_name'];
        $filenames   = (array) $upload['name'];
        $files       = array();
        
        foreach ($tmpFiles as $key => $tmpFile) {
            
            if (!is_uploaded_file($tmpFile)) {
                throw new Exception\UploadException(
                    'File is not an uploaded file', array(), 10110);
            }
            
            $filename   = $filenames[$key];
            $tmpDir     = $this->getTempDir();
            $targetDir  = $tmpDir . '/valu_so_upload_' . md5(basename($tmpFile) . microtime(true));
            $file       = $targetDir . DIRECTORY_SEPARATOR . $filename;
            
            if (!file_exists($targetDir) && mkdir($targetDir)) {
                move_uploaded_file($tmpFile, $file);
                
                $files[] = realpath($file);
            }
        }

        return $files;
    }