code: public TransferState asynchPut(String remoteFileName,
                                     DataSource source,
                                     MarkerListener mListener,
                                     boolean append)
          throws IOException, ServerException, ClientException {
          checkTransferParamsPut();
          if (useAllo && source.totalSize() != -1) {
              allocate(source.totalSize());
          }
          localServer.retrieve(source);
          if (append) {
              controlChannel.write(new Command("APPE", remoteFileName));
          } else {
              controlChannel.write(new Command("STOR", remoteFileName));
          }
  
          return transferStart(localServer.getControlChannel(), mListener);
      }
docs: Stores file at the remote server.
  @param remoteFileName remote file name
  @param source data will be read from here
  @param mListener restart marker listener (currently not used)
  @param append append to the end of file or overwrite