FTPClient в MFC: проблема с GetFile (скачать) - PullRequest
1 голос
/ 22 сентября 2010

Я использую класс CFtpConnection для создания библиотеки FTPClient с использованием MFC. Я использую GetFile для загрузки файла с сервера. Мое требование такое, как если бы я загружал видео 100 МБ с сервера, когда загружено видео 50-60 МБ, и между ними, если я воспроизводил его в то время, когда он должен воспроизводиться до определенного места, которое он загружал до этого времени.

Так я могу сделать какие-нибудь дополнительные параметры, которые мне нужно передать, или что-то в этом роде?

Мой метод загрузки библиотеки FTP выглядит следующим образом:

CFtpConnection* m_pConnect;
bool CFTPClient::Download(LPCTSTR pstrRemoteFile, LPCTSTR pstrLocalFile,
        DWORD dwFlags)
{
   m_pConnect->GetFile(pstrRemoteFile,pstrLocalFile,dwFlags); 
   return true;
}

И во время звонка в моем приложении я делаю так:

CFTPClient m_objftpclient ; 
m_objftpclient.Download("MVI_2884_1.avi","D:\\MVI_2884_1.avi",FTP_TRANSFER_TYPE_BINARY);

1 Ответ

2 голосов
/ 22 сентября 2010

Вы не можете сделать это легко или даже сделать это вообще. Метод GetFile CFtpConnection блокирует, что означает, что он выйдет, только когда файл загружен. Таким образом, даже если вы создадите поток, единственный способ контролировать загрузку - это получить размер файла на диске.

Если вы собираетесь осуществлять потоковую передачу видео, вам следует перейти на уровень ниже и работать на уровне сокетов. Если вы действительно хотите использовать CFtpConnection, вы должны использовать метод OpenFile, который возвращает CInternetFile, который может быть прочитан кусками, позволяя вам отслеживать загрузку и делиться буфером, в который загружается файл для воспроизведения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...