LINUX.ORG.RU

[Qt] QNetworkManagerAccess: как залить файл на FTP?

 


0

0

Всем ещё раз привет!

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

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. ЧЯДНТ?

★★

Гугл не помогает, доки на этот раз подвели(((

Divius ★★
() автор топика

Таакой непонятный код.

anonymous
()
Ответ на: комментарий от fat_angel

Это прототип, потом будет переписан на плюсы. Если, конечно, заработает...

Divius ★★
() автор топика
Ответ на: комментарий от name_no

Это было проверено в первую очередь)

Divius ★★
() автор топика

Ну как бы авторизация не работает. If it rejects the credentials, this signal will be emitted again. И посмотри что за метод авторизации у тебя стоит. Поддерживаются Basic, NTLM version 1, Digest-MD5.
Note that, in particular, NTLM version 2 is not supported.

zJes ★★
()
Ответ на: комментарий от Divius

Ну да, протупил я.
а вообще, почему бы тебе не сделать так...
self.request = QNetworkRequest(QUrl("ftp://ibdftp:111111@127.0.0.1/Test/test.tbz2"))
? :)

zJes ★★
()
Ответ на: комментарий от Divius

И еще, у тебя каталог Test на сервере то есть?

zJes ★★
()
Ответ на: комментарий от Divius

Ничо не понимаю!

Вот я подключаюсь вручную, через ftp:

May 17 12:59:46 divius-pc wu-ftpd[27818]: connection from localhost [127.0.0.1] May 17 12:59:49 divius-pc wu-ftpd[27818]: USER ibdftp May 17 12:59:50 divius-pc wu-ftpd[27818]: PASS password May 17 12:59:50 divius-pc wu-ftpd[27818]: FTP LOGIN FROM localhost [127.0.0.1], ibdftp May 17 12:59:50 divius-pc wu-ftpd[27818]: SYST May 17 12:59:53 divius-pc wu-ftpd[27818]: QUIT May 17 12:59:53 divius-pc wu-ftpd[27818]: FTP session closed

Вот через прогу:

May 17 13:00:59 divius-pc wu-ftpd[27853]: connection from localhost [127.0.0.1] May 17 13:00:59 divius-pc wu-ftpd[27853]: FTP LOGIN REFUSED (ftp not in /etc/passwd) FROM localhost [127.0.0.1], anonymous May 17 13:01:00 divius-pc wu-ftpd[27853]: USER ibdftp May 17 13:01:00 divius-pc wu-ftpd[27853]: PASS password May 17 13:01:00 divius-pc wu-ftpd[27853]: FTP LOGIN FROM localhost [127.0.0.1], ibdftp May 17 13:01:00 divius-pc wu-ftpd[27853]: TYPE Image May 17 13:01:00 divius-pc wu-ftpd[27853]: PASV May 17 13:01:00 divius-pc wu-ftpd[27853]: ALLO 10723805 May 17 13:01:00 divius-pc wu-ftpd[27853]: STOR /Test/test.tbz2 May 17 13:01:00 divius-pc wu-ftpd[27853]: FTP session closed

Авторизация проходит, даже идёт команда, а потом сессия тупо закрывается...

Divius ★★
() автор топика
Ответ на: комментарий от Divius

Дурацкий lorcode...

May 17 12:59:46 divius-pc wu-ftpd[27818]: connection from localhost [127.0.0.1]
May 17 12:59:49 divius-pc wu-ftpd[27818]: USER ibdftp
May 17 12:59:50 divius-pc wu-ftpd[27818]: PASS password
May 17 12:59:50 divius-pc wu-ftpd[27818]: FTP LOGIN FROM localhost [127.0.0.1], ibdftp
May 17 12:59:50 divius-pc wu-ftpd[27818]: SYST
May 17 12:59:53 divius-pc wu-ftpd[27818]: QUIT
May 17 12:59:53 divius-pc wu-ftpd[27818]: FTP session closed


May 17 13:00:59 divius-pc wu-ftpd[27853]: connection from localhost [127.0.0.1]
May 17 13:00:59 divius-pc wu-ftpd[27853]: FTP LOGIN REFUSED (ftp not in /etc/passwd) FROM localhost [127.0.0.1], anonymous
May 17 13:01:00 divius-pc wu-ftpd[27853]: USER ibdftp
May 17 13:01:00 divius-pc wu-ftpd[27853]: PASS password
May 17 13:01:00 divius-pc wu-ftpd[27853]: FTP LOGIN FROM localhost [127.0.0.1], ibdftp
May 17 13:01:00 divius-pc wu-ftpd[27853]: TYPE Image
May 17 13:01:00 divius-pc wu-ftpd[27853]: PASV
May 17 13:01:00 divius-pc wu-ftpd[27853]: ALLO 10723805
May 17 13:01:00 divius-pc wu-ftpd[27853]: STOR /Test/test.tbz2
May 17 13:01:00 divius-pc wu-ftpd[27853]: FTP session closed

Divius ★★
() автор топика
Ответ на: комментарий от Divius

Вот заливаю файл вручную:

May 17 13:03:58 divius-pc wu-ftpd[27940]: connection from localhost [127.0.0.1]
May 17 13:04:01 divius-pc wu-ftpd[27940]: USER ibdftp
May 17 13:04:03 divius-pc wu-ftpd[27940]: PASS password
May 17 13:04:03 divius-pc wu-ftpd[27940]: FTP LOGIN FROM localhost [127.0.0.1], ibdftp
May 17 13:04:03 divius-pc wu-ftpd[27940]: SYST
May 17 13:04:53 divius-pc wu-ftpd[27940]: TYPE ASCII
May 17 13:04:53 divius-pc wu-ftpd[27940]: PORT
May 17 13:04:53 divius-pc wu-ftpd[27940]: LIST Test
May 17 13:05:25 divius-pc wu-ftpd[27940]: TYPE Image
May 17 13:05:25 divius-pc wu-ftpd[27940]: PASV
May 17 13:05:25 divius-pc wu-ftpd[27940]: STOR Test/test.tbz2
May 17 13:05:25 divius-pc wu-ftpd[27940]: xferlog (recv): 1 localhost 10723805 /home/ibdftp/Test/test.tbz2 b _ i r ibdftp ftp 0 * c
May 17 13:05:29 divius-pc wu-ftpd[27940]: TYPE ASCII
May 17 13:05:29 divius-pc wu-ftpd[27940]: PASV
May 17 13:05:29 divius-pc wu-ftpd[27940]: LIST Test
May 17 13:05:37 divius-pc wu-ftpd[27940]: RMD Test/test.tbz2
May 17 13:05:44 divius-pc wu-ftpd[27940]: DELE Test/test.tbz2
May 17 13:05:47 divius-pc wu-ftpd[27940]: PASV
May 17 13:05:47 divius-pc wu-ftpd[27940]: LIST Test
May 17 13:05:49 divius-pc wu-ftpd[27940]: QUIT
May 17 13:05:49 divius-pc wu-ftpd[27940]: FTP session closed

Divius ★★
() автор топика
Ответ на: комментарий от Divius

Походу, проблема в wu-ftpd, с другим сервером заработало

Divius ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.