is it possible to send raw data through ftp?

daniel daniel.huangfei at gmail.com
Fri Oct 20 07:30:02 CEST 2006



On Oct 20, 1:10 pm, Fredrik Lundh <fred... at pythonware.com> wrote:
> daniel wrote:
> > well, I'm trying to use ftplib to upload data that received from
> > socket, and the application is required to  restart the transfer at a
> > specific interval so as to generate a different target file on the
> > server to store subsequent data.
> > the problem is 'storbinary' accepts only file-like object"storbinary" works with anything that has a "read" method that takes a
> buffer size, so you can wrap the source stream in something like:
>
> ##
> # File wrapper that reads no more than 'bytes' data from a stream. Sets
> # the 'eof' attribute to true if the stream ends.
>
> class FileWrapper:
>      def __init__(self, fp, bytes):
>         self.fp = fp
>         self.bytes = bytes
>          self.eof = False
>      def read(self, bufsize):
>         if self.bytes <= 0:
>             return ""
>         data = self.fp.read(min(bufsize, self.bytes))
>          if not data:
>              self.eof = True
>         self.bytes -= len(data)
>         return data
>
> source = open(...)
>
> while 1:
>      cmd = "STOR " + generate_file_name()
>      f = FileWrapper(source, 1000000)
>      ftp.storbinary(cmd, f)
>      if f.eof:
>          break
>
> </F>
I'm trying to understand your code, thank you so much for the help.

daniel




More information about the Python-list mailing list