概览
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());
}));
您可以选择通过在 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 中算是一种 bug。请指定一个较大的值(例如 3600 秒,即 1 小时)或将其指定为零以完全禁用 Timeout。