Russian Qt Forum

Qt => Работа с сетью => Тема начата: Divius от Май 16, 2010, 18:10



Название: QNetworkManagerAccess: как залить файл на FTP?
Отправлено: Divius от Май 16, 2010, 18:10
Всем привет!

В документации к классу QFtp рекламируют новые высокоуровневые классы, как замену старым низкоуровневым, да и самому возня с QFtp надоела. Тесту ради написал следующий код (импорты и main пропущены):

Код
Python
class Test(QWidget):
 
  def __init__(self):
     QWidget.__init__(self)
     self.manager = QNetworkAccessManager();
     self.manager.finished.connect(self.finished)
     self.manager.authenticationRequired.connect(self.auth)
     self.l = QVBoxLayout()
     self.btn = QPushButton()
     self.btn.clicked.connect(self.put)
     self.l.addWidget(self.btn)
     self.setLayout(self.l)
 
  def finished(self, reply):
     print "Finished", reply.error(), reply.error() == QNetworkReply.NoError
     QApplication.quit()
 
  def auth(self, reply, auth):
     print "authenticationRequired", auth.realm()
     auth.setUser("ibdftp")
     auth.setPassword("111111")
 
  def put(self):
     print "Putting"
     self.f = QFile("/home/divius/test.tbz2")
     self.f.open(QIODevice.ReadOnly)
     self.request = QNetworkRequest(QUrl("ftp://127.0.0.1/Test/test.tbz2"))
     self.manager.put(self.request, self.f)
     print "Requested"
 

Не работает - auth вызывается 2 раза, после чего в finished() ошибка QNetworkReply.ContentAccessDenied. ЧЯДНТ?