The PutFile method uploads the contents of 
          a file to the current storage container. If an object exists with 
          the same label, it will be replaced. During the transfer, the
          OnProgress event will fire periodically,
          enabling the application to update any user interface objects such as a
          progress bar.
          Although storage object labels are similar to Windows file names, 
          they are case-sensitive. When requesting information about an object, 
          your application must specify the label name exactly as it was 
          created using this method. The object label cannot contain wildcard characters.
          If the label identifies an object that already exists in the 
          container, and that object was created with the 
          webObjectReadOnly attribute, this method will fail. To replace
          a read-only object, the application must explicitly move, rename
          or delete the existing object.
          If a content type is provided, it must specify a valid MIME 
          media type and subtype. For example, normal text has a content 
          type of text/plain while XML-formatted text
          would have a content type of text/xml. Data that
          contains unstructured binary data is typically identified as
          application/octet-stream. If you do not specify a 
          content type, an appropriate content type will be determined 
          automatically based on the file name and contents.
          If you wish to upload the contents of a string or byte array, use the 
          PutData method.
          When this method returns, various properties such as ObjectId
          and ObjectLabel will be updated to reflect the values
          associated with the object that was created or replaced on the server.