Обзор

Runtime Files Downloader — это плагин для загрузки файлов по протоколам HTTP / HTTPS во время выполнения.
Как использовать
Если вам нужно сохранить файл в хранилище, то вам нужно вызвать DownloadFileToStorage функцию.
- Blueprint
- C++

UFileToStorageDownloader::DownloadFileToStorage(TEXT("https://example.com/File.zip"), TEXT("C:/Folder/File.zip"), 15.0f, TEXT(""), false,
FOnDownloadProgressNative::CreateLambda([](int64 BytesReceived, int64 ContentSize, float ProgressRatio)
{
UE_LOG(LogTemp, Log, TEXT("Download progress: %f"), ProgressRatio);
}), FOnFileToStorageDownloadCompleteNative::CreateLambda([](EDownloadToStorageResult Result, const FString& SavedPath, UFileToStorageDownloader* Downloader)
{
UE_LOG(LogTemp, Log, TEXT("Download complete, result: %s, saved path: %s"), *UEnum::GetValueAsString(Result), *SavedPath);
}));
Если вам не нужно сохранять файл, а просто получить доступ к загруженному содержимому, то вам нужно вызвать функцию DownloadFileToMemory.
- Blueprint
- C++

UFileToMemoryDownloader::DownloadFileToMemory(TEXT("https://example.com/File.zip"), 15.0f, TEXT(""), false,
FOnDownloadProgressNative::CreateLambda([](int64 BytesReceived, int64 ContentSize, float ProgressRatio)
{
UE_LOG(LogTemp, Log, TEXT("Download progress: %f"), ProgressRatio);
}), FOnFileToMemoryDownloadCompleteNative::CreateLambda([](const TArray64<uint8>& DownloadedContent, EDownloadToMemoryResult Result, UFileToMemoryDownloader* Downloader)
{
UE_LOG(LogTemp, Log, TEXT("Download complete, result: %s, DownloadedContent size: %d"), *UEnum::GetValueAsString(Result), DownloadedContent.Num());
}));
При желании вы можете указать тип загружаемого файла, введя MIME-тип в поле Content Type.
Список наиболее распространенных MIME-типов перечислен здесь.
После начала загрузки вы можете отменить ее, используя функцию CancelDownload.
- Blueprint
- C++

// Assuming Downloader is a UE reference to a UFileToStorageDownloader or UFileToMemoryDownloader object
Downloader->CancelDownload();
Обратите внимание, что начиная с UE 5.4 параметр Timeout работает так, что отменяет запрос во время самой загрузки, если общее время загрузки превышает Timeout, что является своего рода ошибкой в UE. Пожалуйста, либо укажите большое значение (например, 3600 секунд, то есть 1 час), либо укажите ноль, чтобы полностью отключить Timeout.
Дополнительные ресурсы
- Приобрести на Fab](https://www.fab.com/listings/771d5e74-3d7d-49b9-a682-7a6f7f86b94c)
- Поддержка плагинов и кастомная разработка: [email protected] (решения под заказ для команд и организаций)