[Twisted-Python] FTPClient storeFile help.

Jp Calderone exarkun at intarweb.us
Fri Oct 3 10:59:23 MDT 2003


On Fri, Oct 03, 2003 at 11:18:28AM +0100, Oisin Mulvihill wrote:
> Hi,
> 
> [snip]
> Why are there two deferred objects returned by storeFile? The documentation
> says:
> 
> storeFile (self ,path ):
> 
>    Store a file at the given path.
> 
>    This method issues the 'STOR' FTP command.
> 
>    Returns:
> 
>    A tuple of two Deferreds:
>        
>    * Deferred IFinishableConsumer . You must call the finish method on the
>        IFinishableConsumer when the file is completely transferred.
> 
>    * Deferred list of  control-connection responses.
> 
> This really doesn't help me much. I get the impression that storeFile
> isn't sending the contents of file, because its waiting for me to stream
> the file contents somehow. Maybe via IFinishableConsumer?

  Correct, I believe.  It looks like you can use FileSender (from t.p.basic)
if you're just sending something off disk (or from any file object, really)
here.

> 
> In my current program, using ftplib, I do the following to upload a file:
> 
>    :
>    ftp.storbinary('STOR %s' % (filename), fp)
>    :
> 
> This has the filename and a file descriptor passed to it. Is something
> like this needed with storeFile?
> 
> Please can someone give me an answer to this, as looking at the code for
> twisted.protocols.ftp isn't helping much either. This function seems to be
> a mystery to me and I want to understand how to use it properly.
> 

  Try...

    from twisted.protocols.basic import FileSender

    def sendfile(consumer, fileObj):
        s = FileSender()
        return s.beginFileTransfer(fileObj, consumer
            ).addCallback(lambda _: consumer.finish()
            )

    dC, dL = p.storeFile("path")
    dC.addCallback(sendfile, fileObj)

  Jp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: </pipermail/twisted-python/attachments/20031003/34d2abe8/attachment.sig>


More information about the Twisted-Python mailing list