code: function chunkedUploadFinish($uploadId, $path, $writeMode)
      {
          Checker::argStringNonEmpty("uploadId", $uploadId);
          Path::checkArgNonRoot("path", $path);
          WriteMode::checkArg("writeMode", $writeMode);
  
          $params = array_merge(array("upload_id" => $uploadId), $writeMode->getExtraParams());
  
          $response = $this->doPost(
              $this->contentHost,
              $this->appendFilePath("1/commit_chunked_upload", $path),
              $params);
  
          if ($response->statusCode === 404) return null;
          if ($response->statusCode !== 200) throw RequestUtil::unexpectedStatus($response);
  
          return RequestUtil::parseResponseJson($response->body);
      }
docs: Creates a file on Dropbox using the accumulated contents of the given chunked upload session.
  
  See <a href="https://www.dropbox.com/developers/core/docs#commit-chunked-upload">/commit_chunked_upload</a>.
  
  @param string $uploadId
  The unique identifier for the chunked upload session.  This is obtained via
  {@link chunkedUploadStart}.
  
  @param string $path
  The Dropbox path to save the file to.
  
  @param WriteMode $writeMode
  What to do if there's already a file at the given path.
  
  @return array|null
  If `null`, it means the Dropbox server wasn't aware of the
  `$uploadId` you gave it.
  Otherwise, you get back the
  <a href="https://www.dropbox.com/developers/core/docs#metadata-details">metadata object</a>
  for the newly-created file.
  
  @throws Exception