def put(self, url):
self.cli.put(url, self._done, None, self.op_attr)
self.cli.register_write(self._buffer, 0, 0, False, self._write, None)
+
+ def move(self, src, dst):
+ self.cli.move(src, dst, self._done, None, self.op_attr)
+
+ self.wait()
class FtpUploadHandler(FileUploadHandler):
ftp = None
+ url = None
+ tmp_url = None
def new_file(self, file_name, *args, **kwargs):
super(FtpUploadHandler, self).new_file(file_name, *args, **kwargs)
if self.ftp is None:
self.ftp = FTPOperation(self.request.session['proxy'], self.chunk_size)
- self.ftp.put('gsiftp://' + host + path + self.file_name)
+ self.url = 'gsiftp://' + host + path + self.file_name
+ self.tmp_url = 'gsiftp://' + host + path + self.file_name + '.part'
+
+ self.ftp.put(self.tmp_url)
StopFutureHandlers()
self.ftp.stream.put(None)
self.ftp.wait()
+ self.ftp.move(self.tmp_url, self.url)
+
return UploadedFile(name=self.file_name, size=file_size, charset=self.charset,
content_type=self.content_type, content_type_extra=self.content_type_extra)