code: public DbxEntry.File uploadFile(String targetPath, DbxWriteMode writeMode, long numBytes, InputStream contents)
          throws DbxException, IOException
      {
          return uploadFile(targetPath, writeMode, numBytes, new DbxStreamWriter.InputStreamCopier(contents));
      }
docs: A wrapper around {@link #uploadFile(String, DbxWriteMode, long, DbxStreamWriter)} that
  lets you pass in an {@link InputStream}.  The entire stream {@code contents} will
  be uploaded.
  
  <pre>
  DbxClientV1 dbxClient = ...
  File f = new File("ReadMe.txt")
  dbxClient.uploadFile("/ReadMe.txt", {@link DbxWriteMode#add()}, f.length(), new FileInputStream(f))
  </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 in the given stream.  Use {@code -1} if you don't know.
  
  @param contents
  The source of file contents.  This stream will be automatically closed (whether or not the
  upload succeeds).
  
  @throws IOException
  If there's an error reading from {@code in}.