Обзор
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] (адаптированные решения для команд и организаций)