code: public Uploader startUploadFile(String targetPath, DbxWriteMode writeMode, long numBytes)
          throws DbxException
      {
          if (numBytes < 0) {
              if (numBytes != -1) {
                  throw new IllegalArgumentException("numBytes must be -1 or greater; given " + numBytes);
              }
              // If the number of bytes isn't given in advance, use chunked uploads.
              return startUploadFileChunked(targetPath, writeMode, numBytes);
          }
          else if (numBytes > ChunkedUploadThreshold) {
              // If the number of bytes is more than some threshold, use chunked uploads.
              return startUploadFileChunked(targetPath, writeMode, numBytes);
          }
          else {
              // Otherwise, use the regular /files_put upload.
              return startUploadFileSingle(targetPath, writeMode, numBytes);
          }
      }
docs: Start an API request to upload a file to Dropbox.  Returns a {@link DbxClientV1.Uploader} object
  that lets you actually send the file contents via {@link DbxClientV1.Uploader#getBody()}.  When
  you're done copying the file body, call {@link DbxClientV1.Uploader#finish}.
  
  <p>
  You need to close the {@link Uploader} when you're done with it.
  Use a {@code try}/{@code finally} to make sure you close it in all cases.
  </p>
  
  <pre>
  DbxClientV1 dbxClient = ...
  DbxClientV1.Uploader uploader = dbxClient.startUploadFile(...)
  DbxEntry.File md;
  try {
  writeMyData(uploader.body);
  md = uploader.finish();
  }
  finally {
  uploader.close();
  }
  </pre>
  
  @param targetPath
  The path to the file on Dropbox (see {@link DbxPathV1}).  If a file at
  that path already exists on Dropbox, then the {@code writeMode} parameter
  will determine what happens.
  
  @param writeMode
  Determines what to do if there's already a file at the given {@code targetPath}.
  
  @param numBytes
  The number of bytes you're going to upload via the returned {@link DbxClientV1.Uploader}.
  Use {@code -1} if you don't know ahead of time.