Visión general
Runtime Files Downloader es un plugin para descargar archivos sobre HTTP / HTTPS en tiempo de ejecución.
Cómo usar
Si necesitas guardar un archivo en el almacenamiento, entonces necesitas llamar a la función 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);
}));
Si no necesitas guardar el archivo, pero solo acceder al contenido descargado, entonces necesitas llamar a la función 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());
}));
Opcionalmente, puedes especificar el tipo de archivo para descargar ingresando un tipo MIME en el campo Content Type
.
Una lista de los tipos MIME más comunes se encuentra aquí.
Después de que la descarga haya comenzado, puedes cancelarla usando la función CancelDownload.
- Blueprint
- C++
// Assuming Downloader is a UE reference to a UFileToStorageDownloader or UFileToMemoryDownloader object
Downloader->CancelDownload();
Tenga en cuenta que a partir de UE 5.4, el parámetro Timeout se comporta de una manera que cancela la solicitud durante la descarga en sí, si el tiempo total de descarga excede el Timeout, lo cual es un error en UE. Por favor, ya sea especifique un valor grande (como 3600 segundos, que es 1 hora) o especifíquelo como cero para desactivar el Timeout completamente.
Ejemplo en vivo
Hay un ejemplo de un simple juego Android que demuestra la capacidad del plugin.