نظرة عامة
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 ثانية، أي ساعة واحدة) أو تحديدها كصفر لتعطيل Timeout بالكامل.
موارد إضافية
- احصل عليه على Fab
- خادم دعم Discord
- تطوير مخصص: [email protected] (حلول مخصصة للفرق والمنظمات)