Обзор

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
- Discord сервер поддержки
- Поддержка плагина и индивидуальная разработка: [email protected] (индивидуальные решения для команд и организаций)