def __init__(self): super(UploadThread, self).__init__() self.ftp = QFtp(self) self.ftp.stateChanged.connect(self.on_ftp_stateChanged) self.ftp.commandFinished.connect(self.on_ftp_commandFinished) self.ftp.dataTransferProgress.connect(self.on_ftp_dataTransferProgress) self.uploading = False
def __init__(self, destinationFile=None, mirror=None): QFtp.__init__(self) # TODO: or parent? solve this. self.updateProxy() self.mirror = mirror self.filePath = destinationFile self.downloading = False QtCore.QObject.connect(self, QtCore.SIGNAL('commandFinished(int,bool)'), self.logCommandFinished) QtCore.QObject.connect(self, QtCore.SIGNAL('stateChanged(int)'), self.logChangeState) QtCore.QObject.connect(self, QtCore.SIGNAL('done(bool)'), self.processDone) QtCore.QObject.connect(self, QtCore.SIGNAL('dataTransferProgress(qint64,qint64)'), self.traceTransferProgress) QtCore.QObject.connect(self, QtCore.SIGNAL('readyRead()'), self.writeBack)
def __init__( self, parent=None ): # ------------------------------------------------------------------- QFtp.__init__( self, parent ); # ------------------------------------------------------------------- self.PARENT = parent; self.DEBUG = False; self.LOG_TAG = str(self.__class__.__name__).upper(); # ------------------------------------------------------------------- self.stateChanged.connect( self.ON_STATE_CHANGED ); self.listInfo.connect( self.ON_LIST_INFO_AVAILABLE ); self.commandFinished.connect( self.ON_COMMAND_FINISHED ); self.commandStarted.connect( self.ON_COMMAND_STARTED ); self.readyRead.connect( self.ON_READY_READ ); self.done.connect( self.ON_DONE ); self.dataTransferProgress.connect( self.ON_DATA_TRANSFER_PROGRESS ); self.rawCommandReply.connect( self.ON_RAW_COMMAND_REPLY ); # ------------------------------------------------------------------- self.HOST = ""; self.PATH = ""; self.USER = ""; self.PWD = ""; self.PORT = 21; # ------------------------------------------------------------------- self.FILE_INFO_LIST = []; self.LOGIN_SUCCESS = False; self.ALLOW_TO_RUN = True; self.LAST_ERROR = QFtp.NoError; self.NEW_URL = ""; self.SHOW_HIDDEN_FILES = False; self.SHOW_FILES_FIRST = False; self.PRINT_CONN_INFO = False; # ------------------------------------------------------------------- self.REQ_UIDS = { "connect" : 0, "login" : 0, "cd" : 0, "list" : 0, } # ------------------------------------------------------------------- self.PARENT.SPLASH.STATUS( self.LOG_TAG+": [INIT]" );
def __init__(self): super(UploadThread,self).__init__() self.ftp = QFtp(self) self.ftp.stateChanged.connect(self.on_ftp_stateChanged) self.ftp.commandFinished.connect(self.on_ftp_commandFinished) self.ftp.dataTransferProgress.connect(self.on_ftp_dataTransferProgress) self.uploading = False
def __init__(self, file_share, local_path, date): Download.__init__(self, file_share, local_path, date) self.ftp = QFtp(self) self.ftp.dataTransferProgress.connect(self.update_progress) self.ftp.done.connect(self.download_finished) self.ftp.stateChanged.connect(self.state_changed) self.url = QUrl(self._file_share.url) self.out_file = QFile(self.local_path) self.read_bytes = self.out_file.size()
def __init__(self, destinationFile=None, mirror=None): QFtp.__init__(self) # TODO: or parent? solve this. self.updateProxy() self.mirror = mirror self.filePath = destinationFile self.downloading = False QtCore.QObject.connect(self, QtCore.SIGNAL('commandFinished(int,bool)'), self.logCommandFinished) QtCore.QObject.connect(self, QtCore.SIGNAL('stateChanged(int)'), self.logChangeState) QtCore.QObject.connect(self, QtCore.SIGNAL('done(bool)'), self.processDone) QtCore.QObject.connect( self, QtCore.SIGNAL('dataTransferProgress(qint64,qint64)'), self.traceTransferProgress) QtCore.QObject.connect(self, QtCore.SIGNAL('readyRead()'), self.writeBack)
class DownloadFtp(Download): def __init__(self, file_share, local_path, date): Download.__init__(self, file_share, local_path, date) self.ftp = QFtp(self) self.ftp.dataTransferProgress.connect(self.update_progress) self.ftp.done.connect(self.download_finished) self.ftp.stateChanged.connect(self.state_changed) self.url = QUrl(self._file_share.url) self.out_file = QFile(self.local_path) self.read_bytes = self.out_file.size() def start_download(self): self.ftp.connectToHost(self.url.host(), self.url.port(21)) self.ftp.login() if self.out_file.open(QIODevice.WriteOnly): self.ftp.get(self.url.path(), self.out_file) def stop(self): self.ftp def state_changed(self, state): if state == 1 or state == 2: self._state = 1 def download_finished(self, _): print "finished !" def update_progress(self, read_bytes, total_bytes): self.read_bytes = read_bytes
def __init__(self, file_share, local_path, date, state): Download.__init__(self, file_share, local_path, date, state) self.ftp = QFtp(self) # Signaux self.ftp.dataTransferProgress.connect(self.update_progress) self.ftp.done.connect(self.download_finished) self.ftp.stateChanged.connect(self.state_changed) # Ouverture de fichiers self.url = QUrl(self._file_share.url) self.out_file = QFile(self.local_path) # Vars self.read_bytes = self.out_file.size() # Timer self.timer = QTimer() self.timer.start(500) self.timer.timeout.connect(self.update_speed)
class UploadThread(QThread): information = pyqtSignal(str) def __init__(self): super(UploadThread, self).__init__() self.ftp = QFtp(self) self.ftp.stateChanged.connect(self.on_ftp_stateChanged) self.ftp.commandFinished.connect(self.on_ftp_commandFinished) self.ftp.dataTransferProgress.connect(self.on_ftp_dataTransferProgress) self.uploading = False def setData(self, files, servers): self.files = files self.servers = servers self.servers_index = 0 self.succeed = 0 def run(self): num = len(self.servers) for self.servers_index in range(num): self.files_index = 0 self.ftp.connectToHost( self.servers[self.servers_index]["host"], int(self.servers[self.servers_index]["port"])) self.uploading = True while self.uploading: QThread.sleep(1) self.information.emit( u"<font color=green>所有服务器上传完成。成功:%s 失败:%s</font><br />" % (self.succeed, num - self.succeed)) def terminate(self): self.ftp.abort() super(UploadThread, self).terminate() self.information.emit(u"<font color=red>上传任务被终止!</font><br />") def on_ftp_stateChanged(self, state): if self.ftp.error(): self.information.emit(u"<font color=red>错误:%s</font>" % self.ftp.errorString()) if self.ftp.error() == 1: self.ftp.close() else: self.do_ftp_close() if state == QFtp.HostLookup: s = Template( u"""创建连接:${platform}-${server_name} 主机:${host} 端口:${port}""") self.information.emit( s.substitute(self.servers[self.servers_index])) elif state == QFtp.Connecting: pass elif state == QFtp.Connected: self.information.emit(u"登陆账号:%s" % self.servers[self.servers_index]["account"]) self.do_ftp_login() elif state == QFtp.LoggedIn: self.information.emit(u"进入目录:%s" % self.servers[self.servers_index]["path"]) self.do_ftp_cd() elif state == QFtp.Closing: self.do_ftp_close() def on_ftp_commandFinished(self): if self.ftp.error(): self.information.emit(u"<font color=red>错误:%s</font>" % self.ftp.errorString()) if self.ftp.error() == 1: self.ftp.close() else: self.do_ftp_close() if self.ftp.currentCommand() == QFtp.Login: pass elif self.ftp.currentCommand() == QFtp.Cd: self.do_ftp_put() elif self.ftp.currentCommand() == QFtp.Put: self.information.emit(u"上传成功:%s" % self.files[self.files_index]) self.files_index += 1 if self.files_index == len(self.files): self.information.emit(u"上传完成") self.succeed += 1 def do_ftp_login(self): self.ftp.login(self.servers[self.servers_index]["account"], self.servers[self.servers_index]["password"]) def do_ftp_cd(self): self.ftp.cd(self.servers[self.servers_index]["path"]) def do_ftp_put(self): num = len(self.files) for i in range(num): file = self.files[i] fhandle = QFile(file) fhandle.open(QIODevice.ReadOnly) byte_array = QByteArray() byte_array.append(fhandle.readData(fhandle.size())) fileinfo = QFileInfo(file) filename = fileinfo.fileName() self.ftp.put(byte_array, filename) self.ftp.close() def on_ftp_dataTransferProgress(self, done, total): pass def do_ftp_close(self): self.ftp.abort() self.information.emit(u"断开连接<br />") self.uploading = False
class DownloadFtp(Download): progressModified = pyqtSignal(object) stateChanged = pyqtSignal(object) downloadFinished = pyqtSignal(object) speedModified = pyqtSignal(object) def __init__(self, file_share, local_path, date, state): Download.__init__(self, file_share, local_path, date, state) self.ftp = QFtp(self) # Signaux self.ftp.dataTransferProgress.connect(self.update_progress) self.ftp.done.connect(self.download_finished) self.ftp.stateChanged.connect(self.state_changed) # Ouverture de fichiers self.url = QUrl(self._file_share.url) self.out_file = QFile(self.local_path) # Vars self.read_bytes = self.out_file.size() # Timer self.timer = QTimer() self.timer.start(500) self.timer.timeout.connect(self.update_speed) def start_download(self): self.ftp.connectToHost(self.url.host(), self.url.port(21)) self.ftp.login() if self.out_file.open(QIODevice.WriteOnly): self.ftp.get(self.url.path(), self.out_file) def stop(self): self._state = 5 self.ftp.abort() self.timer.stop() self.ftp.close() def state_changed(self, state): if state == 1 or state == 2: self._state = 1 elif state == 3 or state == 4: self._state = 3 self.stateChanged.emit(self) def download_finished(self, _): print "finished !" if self.read_bytes != self.file_share.size: self._state = 7 self._speed = 0 self.timer.stop() self.ftp.abort() self.ftp.close() self._state = 4 self.stateChanged.emit(self) self.ftp.done.disconnect(self.download_finished) self.ftp.stateChanged.disconnect(self.state_changed) self.ftp.dataTransferProgress.disconnect(self.update_progress) self.downloadFinished.emit(self) def update_speed(self): delta = time.time() - self._last_time self._speed = float(self.read_bytes - self._last_size) / delta self.last_time = time.time() self.last_size = self.read_bytes self.speedModified.emit(self) def update_progress(self, read_bytes, total_bytes): self.read_bytes = read_bytes self.progressModified.emit(self)
class UploadThread(QThread): information = pyqtSignal(str) def __init__(self): super(UploadThread,self).__init__() self.ftp = QFtp(self) self.ftp.stateChanged.connect(self.on_ftp_stateChanged) self.ftp.commandFinished.connect(self.on_ftp_commandFinished) self.ftp.dataTransferProgress.connect(self.on_ftp_dataTransferProgress) self.uploading = False def setData(self, files, servers): self.files = files self.servers = servers self.servers_index = 0 self.succeed = 0 def run(self): num = len(self.servers) for self.servers_index in range(num): self.files_index = 0 self.ftp.connectToHost(self.servers[self.servers_index]["host"], int(self.servers[self.servers_index]["port"])) self.uploading = True while self.uploading: QThread.sleep(1) self.information.emit(u"<font color=green>所有服务器上传完成。成功:%s 失败:%s</font><br />" % (self.succeed, num - self.succeed)) def terminate(self): self.ftp.abort() super(UploadThread, self).terminate() self.information.emit(u"<font color=red>上传任务被终止!</font><br />") def on_ftp_stateChanged(self, state): if self.ftp.error(): self.information.emit(u"<font color=red>错误:%s</font>" % self.ftp.errorString()) if self.ftp.error() == 1: self.ftp.close() else: self.do_ftp_close() if state == QFtp.HostLookup: s = Template( u"""创建连接:${platform}-${server_name} 主机:${host} 端口:${port}""" ) self.information.emit(s.substitute(self.servers[self.servers_index])) elif state == QFtp.Connecting: pass elif state == QFtp.Connected: self.information.emit(u"登陆账号:%s" % self.servers[self.servers_index]["account"]) self.do_ftp_login() elif state == QFtp.LoggedIn: self.information.emit(u"进入目录:%s" % self.servers[self.servers_index]["path"]) self.do_ftp_cd() elif state == QFtp.Closing: self.do_ftp_close() def on_ftp_commandFinished(self): if self.ftp.error(): self.information.emit(u"<font color=red>错误:%s</font>" % self.ftp.errorString()) if self.ftp.error() == 1: self.ftp.close() else: self.do_ftp_close() if self.ftp.currentCommand() == QFtp.Login: pass elif self.ftp.currentCommand() == QFtp.Cd: self.do_ftp_put() elif self.ftp.currentCommand() == QFtp.Put: self.information.emit(u"上传成功:%s" % self.files[self.files_index]) self.files_index += 1 if self.files_index == len(self.files): self.information.emit(u"上传完成") self.succeed += 1 def do_ftp_login(self): self.ftp.login(self.servers[self.servers_index]["account"], self.servers[self.servers_index]["password"]) def do_ftp_cd(self): self.ftp.cd(self.servers[self.servers_index]["path"]) def do_ftp_put(self): num = len(self.files) for i in range(num): file = self.files[i] fhandle = QFile(file) fhandle.open(QIODevice.ReadOnly) byte_array = QByteArray() byte_array.append(fhandle.readData(fhandle.size())) fileinfo = QFileInfo(file) filename = fileinfo.fileName() self.ftp.put(byte_array, filename) self.ftp.close() def on_ftp_dataTransferProgress(self, done,total): pass def do_ftp_close(self): self.ftp.abort() self.information.emit(u"断开连接<br />") self.uploading = False