【Pyqt4 实例21】实现http下载(下)

    def slotDownload(self):
        url = QUrl(self.LineEditUser.text())
        fileInfo = QFileInfo(url.path())
        fileName = fileInfo.fileName()
        if QFile.exists(fileName):
            QMessageBox.information(self,self.tr("Error"),self.tr("File already exists!"))
            return
        self.file = QFile(fileName)
        if not self.file.open(QIODevice.WriteOnly):
            QMessageBox.information(self,self.tr("Error"),self.tr("Save file error!"))
            self.file = 0
            return
        url_port = url.port()  
        if url_port == -1:
            url_port = 80
        self.httpClient.setHost(url.host(),url_port)

        if not url.userName().isEmpty():
            self.httpClient.setUser(url.userName(),url.userPassword())
        self.httpRequestAborted = False
        self.requestId = self.httpClient.get(url.path(),self.file)
        self.progressBar.reset()
        self.PushButtonDown.setEnabled(False)
        self.PushButtonCancel.setEnabled(True)
        
    def httpRequestFinished(self,id,error):
        if self.httpRequestAborted:
            if self.file:
                self.file.close()
                self.file.remove()
                self.file = 0
            self.progressBar.reset()
            return
        if id == self.requestId:
            self.progressBar.reset()
            self.file.close()
            if error:
                self.file.remove()
                QMessageBox.information(self,self.tr("Error"),self.tr("Download failed!"))
            self.PushButtonDown.setEnabled(True)
            self.PushButtonCancel.setEnabled(False)
            self.file = 0
    
    def httpDataReadProcess(self,done,total):
        self.progressBar.setMaximum(total)
        self.progressBar.setValue(done)
    
    def httpResponseHeaderReceived(self,responseHeader):
        if responseHeader.statusCode != 200 :
            QMessageBox.infomation(self,self.tr("Error"),self.tr("Download error!"))
            self.httpRequestAborted = True
            self.progressBar.reset()
            self.httpClient.abort()
            return
    
    def slotCancel(self):
        self.httpRequestAborted = True
        self.httpClient.abort()
        self.PushButtonDown.setEnabled(True)
        self.PushButtonCancel.setEnabled(False)
    
    def slotExit(self):
        self.close()

app=QApplication(sys.argv)
dialog=HttpClient()
dialog.show()
app.exec_()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值