is it possible to send raw data through ftp?
Fredrik Lundh
fredrik at pythonware.com
Fri Oct 20 01:10:23 EDT 2006
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>
More information about the Python-list
mailing list