I found the solution.

The problem was that by default our proxys producer is registered with streaming = True
which is not what we want.
The following line will register our proxys producer with streaming = False
ProducerConsumerProxy.iAmStreaming = False
The rest is the same.
I think adding an argument to ProducerConsumerProxy.__init__ about streaming would
be a good idea.
proxy = ProducerConsumerProxy(self.client.transport )
dd = FileSender().beginFileTransfer(self.outgoingFile, proxy)
dd.addCallback(self.uploadDone)
dd.addErrback(self.uploadError)