Перевод: DJ_WEST
Описание:
Данный include предоставляет возможность скачивания файлов через HTTP протокол. Максимальное количество одновременных закачек ограничено до 10.
Функции:
HTTP_DownloadFile(const szRemoteFile[], const szLocalFile[])
Описание:
Скачивание файла через HTTP протокол.
Аргументы:
szRemoteFile - ссылка на файл, к примеру: "http://www.amx-x.ru/logo.jpg"
szLocalFile - имя файла, под которым будет сохранен загруженный файл (директория по умолчанию - папка мода), к примеру: "logo.jpg"
Возвращаемое значение:
Функция возвращает уникальное числовое значение (id загрузки), если загрузка началась успешно или 0, если нет.
HTTP_AbortTransfer(iDownloadID, bool:bDeleteLocalFile=true)
Описание:
Отмена активной загрузки файла.
Аргументы:
iDownloadID - уникальный id загрузки, возвращаемый от функции HTTP_DownloadFile и который хранится в forward функции HTTP_Download.
bDeleteLocalFile - удалять локальный файл после отмены загрузки. По умолчанию: true.
Возвращаемое значение:
1 - если успешно, 0 - если нет.
HTTP_Download(const szFile[], iDownloadID, iBytesReceived, iFileSize, bool:bTransferComplete)
Описание:
Отслеживание прогресса загрузки файла (forward функция).
Аргументы:
szFile - локальное имя файла, под которым он будет сохранен.
iDownloadID - уникальный id загрузки.
iBytesReceived - скачанное количество байтов.
iFileSize - размер скачиваемого файла.
bTransferComplete - загрузка завершена или нет.
Необходимые модули:
- engine
- sockets
Пример плагина:
[pawn]
- #include <amxmodx>
- #include <http>
- new const Version[] = "0.3";
- public plugin_init()
- {
- register_plugin("HTTP Test" , Version , "bugsy");
- // Регистрируем команду test для тестирования загрузки
- register_concmd("test" , "DownloadFile");
- }
- // Функция загрузки файла
- public DownloadFile()
- {
- HTTP_DownloadFile( "http://forums.alliedmods.net/images/misc/am_banner.jpg" , "amxmodx.jpg" );
- }
- // Отслеживание процесса загрузки через forward функцию
- public HTTP_Download( const szFile[] , iDownloadID , iBytesRecv , iFileSize , bool:TransferComplete )
- {
- // Если загрузка завершена
- if ( TransferComplete )
- {
- server_print( "%s download complete!" , szFile );
- }
- // Если файл в процессе загрузки
- else
- {
- server_print( "File=[%s] DownloadID=%d BytesTransferred=%d iSize=%d" , szFile , iDownloadID , iBytesRecv , iFileSize );
- }
- }