【PyQt4 实例22】实现ftp的上传和下载
2014-10-11 16:17
441 查看
# -*- coding: utf-8 -*- #另外友情说明一下,如果要测试,可以用webpy框架搭建一个服务器。 from PyQt4.QtGui import * from PyQt4.QtCore import * import sys from PyQt4.QtNetwork import * QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8")) class FtpClient(QDialog): def __init__(self,parent=None): super(FtpClient,self).__init__(parent) self.setWindowTitle(self.tr("实现Ftp上传和下载")) vbMain = QVBoxLayout(self) hb1 = QHBoxLayout() LabelServer = QLabel(self) LabelServer.setText(self.tr("服务器地址:")) self.LineEditServer = QLineEdit(self) hb1.addWidget(LabelServer) hb1.addWidget(self.LineEditServer) hb2 = QHBoxLayout() UserName = QLabel(self) UserName.setText(self.tr("用户名:")) self.LineEditUser = QLineEdit(self) hb2.addWidget(UserName) hb2.addWidget(self.LineEditUser) hb3 = QHBoxLayout() PasswordName = QLabel(self) PasswordName.setText(self.tr("密码:")) self.LineEditPassword = QLineEdit(self) hb3.addWidget(PasswordName) hb3.addWidget(self.LineEditPassword) hb4 = QHBoxLayout() self.PushButtonLogin = QPushButton(self) self.PushButtonLogin.setText(self.tr("登录")) hb4.addWidget(self.PushButtonLogin) hb5 = QHBoxLayout() self.PushButtonPut = QPushButton(self) self.PushButtonPut.setText(self.tr("上传")) self.PushButtonGet = QPushButton(self) self.PushButtonGet.setText(self.tr("下载")) hb5.addWidget(self.PushButtonPut) hb5.addWidget(self.PushButtonGet) vbMain.addLayout(hb1) vbMain.addLayout(hb2) vbMain.addLayout(hb3) vbMain.addLayout(hb4) vbMain.addLayout(hb5) self.connect(self.PushButtonLogin,SIGNAL("clicked()"),self.slotLogin) self.connect(self.PushButtonPut,SIGNAL("clicked()"),self.slotPut) self.connect(self.PushButtonGet,SIGNAL("clicked()"),self.slotGet) self.curStatus = "" self.localFile = QFile() self.remoteFileName = QFile() self.PushButtonPut.setEnabled(False) self.PushButtonGet.setEnabled(False)
def slotLogin(self): serverAddress = self.LineEditServer.text() if serverAddress.isEmpty(): QMessageBox.warning(self,self.tr("error"),self.tr("Please input server address!")) return userName = self.LineEditUser.text() if userName.isEmpty(): QMessageBox.warning(self,self.tr("error"),self.tr("Please input user name!")) return password = self.LineEditPassword.text() if password.isEmpty(): QMessageBox.warning(self,self.tr("error"),self.tr("Please input Passwrod!")) return self.ftpClient = QFtp() self.ftpClient.connectToHost(serverAddress) self.connect(self.ftpClient,SIGNAL("stateChanged(int)"),self.slotStateChanged) self.connect(self.ftpClient,SIGNAL("done(bool)"),self.slotDone) self.ftpClient.login(userName,password) self.curStatus = "LOGIN" def slotStateChanged(self,state): if state == QFtp.LoggedIn: self.PushButtonPut.setEnabled(True) self.PushButtonGet.setEnabled(True) def slotPut(self): OK = False fileName,OK = QInputDialog.getText(self,self.tr("Put File:"),self.tr("Please input file name:"),QLineEdit.Normal,QString()) if OK and not fileName.isEmpty(): self.remoteFileName = QFile(fileName) self.ftpClient.put(self.remoteFileName,fileName) self.curStatus = "PUT" def slotGet(self): OK = False fileName,OK = QInputDialog.getText(self,self.tr("Get File:"),self.tr("Please input file name:"),QLineEdit.Normal,QString()) if OK and not fileName.isEmpty(): self.localFile = QFile(fileName) self.localFile.open(QIODevice.WriteOnly) self.ftpClient.get(fileName,self.localFile) self.curStatus = "GET" def slotDone(self,error): if error: QMessageBox.warning(self,self.tr("error"),self.ftpClient.errorString()) return if self.curStatus == "LOGIN": self.PushButtonLogin.setEnabled(False) self.curStatus = "None" if self.curStatus == "PUT": QMessageBox.warning(self,self.tr("succeed"),self.tr("Put file succeed!")) self.curStatus = "None" if self.curStatus == "GET": self.localFile.close() QMessageBox.warning(self,self.tr("succeed"),self.tr("Get file succeed!")) self.curStatus = "None" app=QApplication(sys.argv) dialog=FtpClient() dialog.show() app.exec_()
相关文章推荐
- 【PyQt4 实例22】实现ftp的上传和下载(下)
- php下连接ftp实现文件的上传、下载、删除文件实例代码
- Qt实现FTP的上传和下载的实例代码
- python实现的简单FTP上传下载文件实例
- php下连接ftp实现文件的上传、下载、删除文件实例代码
- python实现的简单FTP上传下载文件实例
- Java实现FTP文件的上传和下载功能的实例代码
- JAVA中使用FTPClient实现文件上传下载实例代码
- JAVA中使用FTPClient实现文件上传下载实例代码
- JAVA中使用FTPClient实现文件上传下载实例代码
- JSP的那些事儿(6)----JSP实现FTP上传及下载
- 利用Indy的TIdFtp控件实现FTP协议, 远程下载上传文件
- Microsoft .NET Framework 2.0对文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1
- 使用.net FtpWebRequest 实现FTP常用功能 上传 下载 获取文件列表 移动 切换目录 改名
- Microsoft .NET Framework 2.0对文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1
- Microsoft .NET Framework 2.0对文件传输协议(FTP)操作(异步上传,下载等)实现汇总2
- FTP上传下载的断点续传实现
- .Net 2.0对文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总
- 使用Shell脚本来实现FTP的自动上传下载
- 用vb实现ftp的上传下载