Przegląd
Runtime Files Downloader to wtyczka do pobierania plików przez HTTP / HTTPS w czasie rzeczywistym.
Jak używać
Jeśli chcesz zapisać plik w pamięci, musisz wywołać funkcję 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);
}));
Jeśli nie potrzebujesz zapisywać pliku, a jedynie uzyskać dostęp do pobranej zawartości, wtedy musisz wywołać funkcję 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());
}));
Opcjonalnie możesz określić typ pliku do pobrania, wprowadzając typ MIME w polu Content Type
.
Lista najczęstszych typów MIME znajduje się tutaj.
Po rozpoczęciu pobierania możesz je anulować za pomocą funkcji CancelDownload.
- Blueprint
- C++
// Assuming Downloader is a UE reference to a UFileToStorageDownloader or UFileToMemoryDownloader object
Downloader->CancelDownload();
Proszę zauważyć, że począwszy od UE 5.4, parametr Timeout zachowuje się w sposób, który anuluje żądanie podczas samego pobierania, jeśli całkowity czas pobierania przekroczy Timeout, co jest poniekąd błędem w UE. Proszę albo określić dużą wartość (taką jak 3600 sekund, czyli 1 godzinę), albo ustawić ją na zero, aby całkowicie wyłączyć Timeout.
Dodatkowe zasoby
- Pobierz na Fab
- Serwer wsparcia na Discordzie
- Niestandardowy rozwój: [email protected] (rozwiązania szyte na miarę dla zespołów i organizacji)