Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QFtp类提供FTP协议的客户端的实现。More...
继承QObject。
该QFtp类提供FTP协议的客户端的实现。
这个类提供了一个直接接口到FTP ,让您拥有更多的控制权的要求。然而,对于新的应用程序,它是推荐使用QNetworkAccessManager和QNetworkReply作为这些类具有一个简单,但更强大的API 。
类以异步方式工作,所以没有阻挡功能。如果操作不能被立即执行,该函数将仍然返回直线距离,操作将被安排在以后执行。调度操作的结果通过信号报告。这种方法依赖于事件循环运行之中。
可以计划的操作(它们在文档其馀部分被称为“命令” )有以下几种:connectToHost( )login( )close( )list( )cd( )get( )put( )remove( )mkdir( )rmdir( )rename()和rawCommand( ) 。
所有这些命令都返回一个唯一的标识符,它允许你跟踪当前正在执行的命令。当一个指令的执行开始时,commandStarted( )信号与命令的识别码被发射。当命令完成后,commandFinished( )信号发出的命令的标识符和一个布尔值,表示该命令是否有错误完成。
在某些情况下,您可能要执行的命令序列,例如:如果你想连接并登录到FTP服务器。这是简单的实现:
QFtp *ftp = new QFtp(parent); ftp->connectToHost("ftp.qt.nokia.com"); ftp->login();
在这种情况下,两个FTP命令已排定。当最后一个调度命令已完成,一done( )信号被发射一个布尔参数,它告诉你的序列是否有错误完成。
如果其中一个命令在命令序列的执行过程中发生了错误,所有挂起的命令(即预定的,但尚未执行的命令)被清零,并且没有信号发射它们。
一些命令,例如list( ) ,发出额外的信号来报告他们的成果。
例如:如果你想从Qt的FTP服务器上下载安装文件,你会这样写:
ftp->connectToHost("ftp.qt.nokia.com"); // id == 1 ftp->login(); // id == 2 ftp->cd("qt"); // id == 3 ftp->get("INSTALL"); // id == 4 ftp->close(); // id == 5
在这个例子中的信号按以下顺序发出(以小的变化,这取决于网络的流量等) :
start(1) stateChanged(HostLookup) stateChanged(Connecting) stateChanged(Connected) finished(1, false) start(2) stateChanged(LoggedIn) finished(2, false) start(3) finished(3, false) start(4) dataTransferProgress(0, 3798) dataTransferProgress(2896, 3798) readyRead() dataTransferProgress(3798, 3798) readyRead() finished(4, false) start(5) stateChanged(Closing) stateChanged(Unconnected) finished(5, false) done(false)
该dataTransferProgress如果要显示在上面的例子()信号是有用的一progress bar以通知用户有关下载的进度。该readyRead( )信号告诉你,有数据准备好读。可被查询的数据量,然后与bytesAvailable()函数,它可以读取与该read()或readAll()函数。
如果登录失败对于上面的例子中,信号是这样的:
start(1) stateChanged(HostLookup) stateChanged(Connecting) stateChanged(Connected) finished(1, false) start(2) finished(2, true) done(true)
然后,您可以获取与错误的详细信息error()和errorString()函数。
对于文件传输, QFtp可以同时使用主动或被动模式,并使用被动传输文件的默认模式,见文档setTransferMode( ) ,以便了解更多的细节。
Call setProxy( )使QFtp通过FTP代理服务器进行连接。
该功能currentId()和currentCommand( )提供有关当前正在执行的命令的详细信息。
该功能hasPendingCommands()和clearPendingCommands()允许您查询和清除挂起的命令的列表。
如果你是一个有经验的网络程序员,并希望有完全的控制,您可以使用rawCommand()来执行任意FTP命令。
Warning:QFtp的当前版本不完全支持非Unix的FTP服务器。
该枚举被用作返回值currentCommand()函数。这可以让你执行特定命令的具体行动,例如:在FTP客户端,你可能想清除的目录视图时,list如果在这种情况下,你可以简单地检查连接到启动的插槽( )信号, ( )命令启动currentCommand()是List。
Constant | Value | Description |
---|---|---|
QFtp.None | 0 | 正在执行任何命令。 |
QFtp.SetTransferMode | 1 | 设置transfer模式。 |
QFtp.SetProxy | 2 | 打开或关闭代理。 |
QFtp.ConnectToHost | 3 | connectToHost()被执行。 |
QFtp.Login | 4 | login()被执行。 |
QFtp.Close | 5 | close()被执行。 |
QFtp.List | 6 | list()被执行。 |
QFtp.Cd | 7 | cd()被执行。 |
QFtp.Get | 8 | get()被执行。 |
QFtp.Put | 9 | put()被执行。 |
QFtp.Remove | 10 | remove()被执行。 |
QFtp.Mkdir | 11 | mkdir()被执行。 |
QFtp.Rmdir | 12 | rmdir()被执行。 |
QFtp.Rename | 13 | rename()被执行。 |
QFtp.RawCommand | 14 | rawCommand()被执行。 |
See also currentCommand( ) 。
这个枚举标识所发生的错误。
Constant | Value | Description |
---|---|---|
QFtp.NoError | 0 | 未发生错误。 |
QFtp.HostNotFound | 2 | 该主机名查找失败。 |
QFtp.ConnectionRefused | 3 | 服务器拒绝连接。 |
QFtp.NotConnected | 4 | 试图发送一个命令,但有一个服务器的任何连接。 |
QFtp.UnknownError | 1 | 发生错误比上述指定的。 |
See also error( ) 。
这个枚举变量定义的连接状态:
Constant | Value | Description |
---|---|---|
QFtp.Unconnected | 0 | 还有就是主机的连接。 |
QFtp.HostLookup | 1 | 主机名查找正在进行中。 |
QFtp.Connecting | 2 | 连接到主机的尝试正在进行中。 |
QFtp.Connected | 3 | 到主机的连接已经完成。 |
QFtp.LoggedIn | 4 | 连接和用户登录已经实现。 |
QFtp.Closing | 5 | 连接被关闭了,但它尚未关闭。 (该状态将是Unconnected当连接关闭。 ) |
See also stateChanged()和state( ) 。
FTP使用两种套接字连接,一个用于命令和另一个用于传输数据。而总是由客户端发起命令连接,第二连接可以通过在客户端或服务器来启动。
这个枚举定义了客户端(被动模式)或服务器(主动模式)是否应该建立数据连接。
Constant | Value | Description |
---|---|---|
QFtp.Passive | 1 | 客户端连接到服务器传送数据。 |
QFtp.Active | 0 | 该服务器连接到客户端发送其数据。 |
这个枚举标识与get和put命令中使用的数据传输类型。
Constant | Value | Description |
---|---|---|
QFtp.Binary | 0 | 这些数据将被传输二进制模式。 |
QFtp.Ascii | 1 | 这些数据将被转移在ASCII模式和新行字符将被转换为本地格式。 |
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
构造一个QFtp与给定对象parent。
这种方法也是一个Qt槽与C + +的签名void abort()。
中止当前命令,并删除所有已计划的命令。
如果有一个未完成的命令(即命令的量,commandStarted()信号已被发射,但是该commandFinished()信号没有被发射的) ,该函数发送一个ABORT命令给服务器。当服务器回复该命令被中止,commandFinished()的信号与error参数设置为true发出该命令。由于定时问题,有可能在命令已经完成之前中止请求到达服务器,在这种情况下,该commandFinished()信号被发射的error参数设置为false。
对于那些受中止( )其他所有的命令,没有信号发射。
如果你不开始进一步直接中止后FTP命令( ) ,将不会有任何计划的命令和done()信号被发射。
Warning:有些FTP服务器,例如BSD的FTP守护程序( 0.3版本) ,返回错误已经发生中止,即使一个肯定的答复。对于这些服务器的commandFinished( )信号有错误标志设置为false,即使命令没有成功完成。
See also clearPendingCommands( ) 。
返回可从数据套接字中读取的时刻的字节数。
See also get( )readyRead( )read()和readAll( ) 。
改变了服务器的工作目录dir。
该功能不会阻止,并立即返回。该命令是预定的,并且是异步执行的执行。该函数返回一个唯一的标识符,它是由通过commandStarted()和commandFinished( ) 。
当命令开始commandStarted()信号被发射。当它完成时的commandFinished()信号被发射。
See also commandStarted()和commandFinished( ) 。
删除所有挂起的命令从预定的命令列表。这并不会影响正在执行的命令。如果你想停止这一点,使用abort( ) 。
See also hasPendingCommands()和abort( ) 。
关闭连接到FTP服务器。
该stateChanged()信号被发射时,在连接过程的状态变化,例如至Closing,然后Unconnected。
该功能不会阻止,并立即返回。该命令是预定的,并且是异步执行的执行。该函数返回一个唯一的标识符,它是由通过commandStarted()和commandFinished( ) 。
当命令开始commandStarted()信号被发射。当它完成时的commandFinished()信号被发射。
See also stateChanged( )commandStarted()和commandFinished( ) 。
连接到FTP服务器host使用端口port。
该stateChanged()信号被发射时,在连接过程的状态变化,例如至HostLookup,然后Connecting,然后Connected。
该功能不会阻止,并立即返回。该命令是预定的,并且是异步执行的执行。该函数返回一个唯一的标识符,它是由通过commandStarted()和commandFinished( ) 。
当命令开始commandStarted()信号被发射。当它完成时的commandFinished()信号被发射。
See also stateChanged( )commandStarted()和commandFinished( ) 。
返回FTP命令被执行的命令类型或None如果没有命令被执行。
See also currentId( ) 。
返回QIODevice指针所使用的FTP命令来读取数据或存储数据。如果有正在执行无电流的FTP命令,或者如果命令不使用的IO设备,该函数返回0 。
此功能可用于删除的QIODevice在连接到插槽commandFinished()信号。
返回正在执行FTP命令或标识符0 ,如果没有命令被执行。
See also currentCommand( ) 。
返回所发生的最后一个错误。接收时,此功能非常有用,找出什么地方出了错一commandFinished()或一done()的信号与error参数设置为true。
如果你开始一个新的命令,错误状态重置为NoError。
返回上次发生错误的人类可读的描述。接收时,这是用于呈现错误信息给用户有用的一commandFinished()或一done()的信号与error参数设置为true。
错误字符串通常是(但不总是)从服务器的应答,因此它并不总是可能的翻译的字符串。如果消息来自Qt中,字符串已通过tr( ) 。
下载文件file从服务器。
If dev是0,则readyRead当有数据可供读取( )信号被发射。然后,您可以与读取数据read()或readAll()函数。
If dev不为0时,数据被直接写入设备dev。确保dev指针是有效的操作的持续时间(它是安全的删除当commandFinished()信号被发射) 。在这种情况下readyRead()信号是not发出的,你不能与读取数据read()或readAll()函数。
如果不立即读取数据变得可用,即当readyRead()信号被发射,它仍然是可用的,直到下一个指令开始。
例如,如果你想尽快有一些可用的数据呈现给用户,连接到readyRead()信号,并立即读出的数据。在另一方面,如果只想用完整的数据来工作,你可以连接到commandFinished( )信号和读取时的get ( )命令完成的数据。
这取决于价值的数据作为二进制或ASCIItype。
该功能不会阻止,并立即返回。该命令是预定的,并且是异步执行的执行。该函数返回一个唯一的标识符,它是由通过commandStarted()和commandFinished( ) 。
当命令开始commandStarted()信号被发射。当它完成时的commandFinished()信号被发射。
See also readyRead( )dataTransferProgress()和commandStarted( ) 。
返回True如果有尚未被执行计划的任何命令,否则返回False 。
正在执行的命令是not视为一个调度命令。
See also clearPendingCommands( )currentId()和currentCommand( ) 。
列出目录的内容dir在FTP服务器上。如果dir是空的,它会列出当前目录的内容。
该listInfo( )信号被发射对找到的每个目录项。
该功能不会阻止,并立即返回。该命令是预定的,并且是异步执行的执行。该函数返回一个唯一的标识符,它是由通过commandStarted()和commandFinished( ) 。
当命令开始commandStarted()信号被发射。当它完成时的commandFinished()信号被发射。
See also listInfo( )commandStarted()和commandFinished( ) 。
登录到FTP服务器的用户名user和密码password。
该stateChanged()信号被发射时,在连接过程的状态变化,例如至LoggedIn。
该功能不会阻止,并立即返回。该命令是预定的,并且是异步执行的执行。该函数返回一个唯一的标识符,它是由通过commandStarted()和commandFinished( ) 。
当命令开始commandStarted()信号被发射。当它完成时的commandFinished()信号被发射。
See also commandStarted()和commandFinished( ) 。
创建一个名为目录dir在服务器上。
该功能不会阻止,并立即返回。该命令是预定的,并且是异步执行的执行。该函数返回一个唯一的标识符,它是由通过commandStarted()和commandFinished( ) 。
当命令开始commandStarted()信号被发射。当它完成时的commandFinished()信号被发射。
See also commandStarted()和commandFinished( ) 。
读取IO设备中的数据dev,并将其写入到被调用的文件file在服务器上。读取数据从IO设备的块,所以此重载允许您传输大量的数据,而不需要读取所有的数据到内存中一次。
这取决于价值的数据作为二进制或ASCIItype。
确保dev指针是有效的操作的持续时间(它是安全的删除当commandFinished()被发射) 。
这是一个重载函数。
写入给定的一个副本data要调用的文件file在服务器上。上传的进度报告的dataTransferProgress()信号。
这取决于价值的数据作为二进制或ASCIItype。
该功能不会阻止,并立即返回。该命令是预定的,并且是异步执行的执行。该函数返回一个唯一的标识符,它是由通过commandStarted()和commandFinished( ) 。
当命令开始commandStarted()信号被发射。当它完成时的commandFinished()信号被发射。
由于该功能需要的副本data,你可以放弃自己的副本时,该函数返回。
See also dataTransferProgress( )commandStarted()和commandFinished( ) 。
将原始的FTP命令command到FTP服务器。这是低层次的FTP访问有用的。如果你想执行的操作具有等效QFtp的功能,我们建议使用该功能,而不是原始的FTP命令,因为功能更容易,更安全。
该功能不会阻止,并立即返回。该命令是预定的,并且是异步执行的执行。该函数返回一个唯一的标识符,它是由通过commandStarted()和commandFinished( ) 。
当命令开始commandStarted()信号被发射。当它完成时的commandFinished()信号被发射。
See also rawCommandReply( )commandStarted()和commandFinished( ) 。
阅读maxlen从数据插座成字节data并返回读取的字节数。返回-1,如果发生了错误。
See also get( )readyRead( )bytesAvailable()和readAll( ) 。
读取所有可用的数据套接字的字节数,并返回它们。
See also get( )readyRead( )bytesAvailable()和read( ) 。
删除的文件称为file从服务器。
该功能不会阻止,并立即返回。该命令是预定的,并且是异步执行的执行。该函数返回一个唯一的标识符,它是由通过commandStarted()和commandFinished( ) 。
当命令开始commandStarted()信号被发射。当它完成时的commandFinished()信号被发射。
See also commandStarted()和commandFinished( ) 。
所谓重命名文件oldname至newname在服务器上。
该功能不会阻止,并立即返回。该命令是预定的,并且是异步执行的执行。该函数返回一个唯一的标识符,它是由通过commandStarted()和commandFinished( ) 。
当命令开始commandStarted()信号被发射。当它完成时的commandFinished()信号被发射。
See also commandStarted()和commandFinished( ) 。
所谓删除的目录dir从服务器。
该功能不会阻止,并立即返回。该命令是预定的,并且是异步执行的执行。该函数返回一个唯一的标识符,它是由通过commandStarted()和commandFinished( ) 。
当命令开始commandStarted()信号被发射。当它完成时的commandFinished()信号被发射。
See also commandStarted()和commandFinished( ) 。
允许主机使用FTP代理的host和端口port。调用此函数host空禁用代理。
QFtp不支持FTP环比HTTP代理服务器。使用QNetworkAccessManager这一点。
设置当前FTP传输模式mode。默认值是QFtp.Passive。
See also QFtp.TransferMode。
返回该对象的当前状态。当状态改变时,stateChanged()信号被发射。
See also State和stateChanged( ) 。
这是该信号的默认超载。
处理确定的命令时,这个信号被发射id已完成。error是真的,如果在处理过程中发生错误,否则error是假的。
See also commandStarted( )done( )error()和errorString( ) 。
这是该信号的默认超载。
处理确定的命令时,这个信号被发射id开始。
See also commandFinished()和done( ) 。
这是该信号的默认超载。
此信号响应于被发射get()或put()请求指示下载或上传的当前进度。
done是数据的一个已经被转移及金额total是数据要被读出或写入的总量。它是可能的QFtp类是不能够确定数据应该被转移的总量,在此情况total为0。 (如果这个信号连接到QProgressBar,进度条显示一个繁忙的指标,如果总为0 ) 。
Warning: done和total不一定以字节为单位的大小,因为对于大文件的这些值可能需要被“缩放”,以避免溢出。
See also get( )put()和QProgressBar。
这是该信号的默认超载。
这个信号被发射时的最后等候命令完成(这是后发出的最后一个命令的commandFinished( )信号) 。error是真的,如果在处理过程中发生错误,否则error是假的。
See also commandFinished( )error()和errorString( ) 。
这是该信号的默认超载。
这个信号被发射的每个目录项的list( )命令的发现。条目的详细信息存储在i。
See also list( ) 。
这是该信号的默认超载。
此信号响应于所述发射rawCommand()函数。replyCode是3位数字应答码和detail是遵循应答码的文本。
See also rawCommand( ) 。
这是该信号的默认超载。
此信号响应于被发射get( )命令时有新的数据读取。
如果指定的设备如在第二个参数get()命令,该信号是not射出,而是将数据直接写入到设备。
如果你想,只要它成为可用在处理大块数据这个信号是非常有用的。如果你只关心在完整的数据,只需连接到commandFinished( )信号并读取数据,然后代替。
See also get( )read( )readAll()和bytesAvailable( ) 。
这是该信号的默认超载。
这个信号被发射时的连接状态发生改变。这个论点state是该连接的新的状态,它是一个State值。
它通常是在响应于发射connectToHost()或close()命令,但它也可以被发射的“自发地” ,例如当服务器意外关闭连接。
See also connectToHost( )close( )state()和State。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |