【发布时间】:2012-08-05 14:33:51
【问题描述】:
我编写了一个小程序,它能够通过 ftp 将文件上传到服务器。由于某些文件很大,我想为用户创建一个进度条。因此,在上传期间,我需要每隔一定时间知道有多少字节已发送到服务器,以便得出已上传文件的百分比。到目前为止我尝试过的:
当我调用函数 FtpPutFile() 来上传文件时,我使用以下代码生成了一个线程:
hInternet = InternetOpen(NULL,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);
hFtpSession = InternetConnect(hInternet, ftpserver, port, user, pass, INTERNET_SERVICE_FTP, 0, 0);
int filesize = 0; // 2GB max
hFile = FtpOpenFile(hFtpSession,szFileTitle,GENERIC_READ,FTP_TRANSFER_TYPE_BINARY,0);
filesize = FtpGetFileSize(hFile,0);
cout << "Size: " << filesize << endl;
但是这似乎不起作用,因为 filesize 一直返回值 -1。我认为这是因为我正在写入文件(上传部分),同时我试图读取它以获取文件大小。而且我认为这是不可能的(如果我错了,请纠正我)。
我的主要问题:还有其他方法可以为 ftp 上传创建进度条吗?也许使用函数 readBytesCount() 来计算字节上传之前(不是确定这是否可能)。
【问题讨论】:
标签: c++ ftp progress-bar