anchor.diff:  		required string toURI,
   		string acl          = variables.defaultACL,
   		struct metaHeaders  = {},
  -		string storageClass = variables.defaultStorageClass
  +		string storageClass = variables.defaultStorageClass,
  +		string contentType,
  +		boolean throwOnError = variables.throwOnRequestError
   	){
   		var headers    = { "content-length" : 0 };
   		var amzHeaders = createMetaHeaders( arguments.metaHeaders );
  +
  +		// If not passed, keep source files content type
  +		if( !isNull( arguments.contentType ) ) {
  +			if ( arguments.contentType == "auto" ) {
  +				arguments.contentType = getFileMimeType( arguments.toURI );
  +			}
  +			headers[ "content-type" ] = arguments.contentType;
  +			amzHeaders[ "x-amz-metadata-directive" ] = "REPLACE";
  +		}
   
   		if ( not structIsEmpty( arguments.metaHeaders ) ) {
   			amzHeaders[ "x-amz-metadata-directive" ] = "REPLACE";
  
positive.code: 			amzHeaders[ "x-amz-storage-class" ] = arguments.storageClass;
  		}
  
  		var headers = { "content-type" : arguments.contentType };
  
  		if ( len( arguments.cacheControl ) ) {
  
negative.code: 	 * @storageClass Sets the S3 storage class which affects cost, access speed and durability.
  	 *               Defaults to STANDARD.
  	 * @metaHeaders  Additonal metadata headers to add.
  	 * @storageClass Sets the S3 storage class which affects cost, access speed and durability.
  	 *               Defaults to STANDARD.
  	 * @contentType  The file content type. Defaults to binary/octet-stream.
  	 * @throwOnError Flag to throw exceptions on any error or not, default is true
  	 *
  	 * @return      True if the object was copied correctly.
  	 */
  