The PutData method transfers data from a local buffer and
          stores it on a file on the server. This method will cause the current
          thread to block until the file transfer completes, a timeout occurs
          or the transfer is canceled. During the transfer, the
          OnProgress event will fire periodically, enabling the
          application to update any user interface objects such as a progress
          bar.
          If you are using a String buffer, the contents of the buffer 
          will automatically be converted to UTF-8 encoded text. Most 
          applications support UTF-8 encoding, however if you need to store the 
          text using a different encoding you can change the value of the 
          CodePage property and use the PutText method instead.
          Never use a String variable to upload binary data. This 
          method will automatically attempt to convert the contents of the 
          string to UTF-8 encoded text and this can corrupt the data. If you 
          need to upload binary data using the PutData method, you should 
          always use a Byte array.
          
          The value specified with the Length parameter may not be 
          identical to the size of the text file created on the server. The 
          end-of-line conventions may differ between the server and the local 
          system, and conversion to Unicode may cause differences in the 
          character count. For example, if this method is used to upload text 
          which includes non-ASCII characters, those characters will be UTF-8 
          encoded. If you want to upload an exact copy of the data in your 
          buffer, make sure the FileType property is set to ftpFileTypeBinary 
          and use a Byte array instead of a String 
          variable.