我编写了一个小程序,它能够通过 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;
但是,这似乎不起作用,因为文件大小不断返回值 -1。我认为这是因为我正在写入文件(上传部分),同时我试图读取它以获取文件大小。而且我认为这是不可能的(如果我错了,请纠正我)。
我的主要问题:是否有另一种方法可以为 ftp 上传创建进度条?也许在使用函数 readBytesCount() 上传之前计算字节数(不确定这是否可能)。