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_()
【Pyqt4 实例21】实现http下载(下)
最新推荐文章于 2021-02-21 09:53:10 发布