概要
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);
}));
</TabItem>
</Tabs>
ファイルを保存する必要がなく、ダウンロードした内容にアクセスするだけでよい場合は、**DownloadFileToMemory** 関数を呼び出す必要があります。
<Tabs groupId="languages">
<TabItem value="blueprint" label="Blueprint">
![Download File To Memory node](/img/runtime-files-downloader/downloadfiletomemory.jpg)
</TabItem>
<TabItem value="c++" label="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のバグの一部です。大きな値(たとえば3600秒、つまり1時間)を指定するか、Timeoutを完全に無効にするためにゼロを指定してください。