code: public void putObject(String bucketName, String objectName, String fileName)
      throws InvalidBucketNameException, NoSuchAlgorithmException,  IOException,
             InvalidKeyException, NoResponseException, XmlPullParserException, ErrorResponseException,
             InternalException,
             InvalidArgumentException, InsufficientDataException {
      putObject(bucketName, objectName, fileName, null);
    }
docs: Uploads given file as object in given bucket.
  <p>
  If the object is larger than 5MB, the client will automatically use a multipart session.
  </p>
  <p>
  If the session fails, the user may attempt to re-upload the object by attempting to create
  the exact same object again.
  </p>
  <p>
  If the multipart session fails, we abort all the uploaded content.
  </p>
  
  @param bucketName  Bucket name.
  @param objectName  Object name to create in the bucket.
  @param fileName    File name to upload.
  
  @throws InvalidBucketNameException  upon invalid bucket name is given
  @throws NoSuchAlgorithmException
  upon requested algorithm was not found during signature calculation
  @throws IOException                 upon connection error
  @throws InvalidKeyException
  upon an invalid access key or secret key
  @throws NoResponseException         upon no response from server
  @throws XmlPullParserException      upon parsing response xml
  @throws ErrorResponseException      upon unsuccessful execution
  @throws InternalException           upon internal library error
  @throws InvalidArgumentException    upon invalid value is passed to a method.
  @throws InsufficientDataException   upon getting EOFException while reading given