استخراج محتوى OBJ من ZIP في .NET
استخدم Aspose.ZIP for .NET لفتح أرشيف ZIP، فحص إدخالاته، واستعادة ملفات OBJ التي يحتاجها تطبيق C#. ينتمي OBJ إلى فئة أصول ثلاثية الأبعاد؛ وفي هذه الصفحة يعني الاستخراج اختيار الملفات المطابقة من حاوية ZIP وكتابتها إلى وجهة يتحكم بها التطبيق، وليس تحويل محتوى الملف الداخلي.يناسب هذا المسار استيراد أصول 3D، مراجعة النماذج، مسارات التصور، وحزم المشاريع التي يرفعها المستخدمون. يستطيع التطبيق تجاهل العناصر غير المرتبطة، تطبيق حدود الحجم والمسارات، وتمرير الملفات المقبولة إلى المرحلة التالية من دون فك الحزمة بالكامل.
كيفية استخراج ملفات OBJ من ZIP باستخدام C#
ثبت حزمة Aspose.ZIP for .NET وأضف namespace Aspose.Zip. تتوفر بيانات الإدخال قبل الكتابة، لذلك يمكن للتطبيق فحص ArchiveEntry.Name و ArchiveEntry.IsDirectory و ArchiveEntry.UncompressedSize قبل استخراج أي ملف.
Package Manager Console Command
PM> Install-Package Aspose.Zip
افتح ZIP باستخدام Archive، استعرض Archive.Entries، اختر الإدخالات التي تطابق .obj، ثم استدع ArchiveEntry.Extract لكل مسار إخراج معتمد. تستخدم الأمثلة أسماء الملفات النهائية أو مساراتا متحقق منها حتى لا تتحكم أسماء الأرشيف في مكان الكتابة.
خطوات استعادة ملفات OBJ في C#
- حدد مسار ZIP المصدر وأنشئ مجلد إخراج معزولا.
- افتح الحزمة باستخدام الفئة Archive.
- استعرض Archive.Entries بدلا من فك كل العناصر مباشرة.
- اختر الإدخالات التي تطابق .obj أو القاعدة الخاصة بالتنسيق.
- ابن مسار إخراج يبقى داخل الجذر المعتمد.
- ارفض الإدخالات التي تتجاوز حد الحجم بعد الاستخراج.
- احفظ كل عنصر مقبول باستخدام ArchiveEntry.Extract.
متطلبات النظام
قبل تشغيل المثال، تأكد من توفر:
- Runtime مدعوم من .NET على Windows أو Linux أو macOS.
- Visual Studio أو Rider أو VS Code أو بيئة تطوير C# أخرى.
- Aspose.ZIP for .NET مثبتا عبر NuGet أو مضافا كمرجع assembly.
- صلاحية قراءة لأرشيف ZIP وصلاحية كتابة لمجلد الإخراج.
- حدود واضحة للحجم والوقت والتخزين عند التعامل مع ملفات غير موثوقة.
مثال C#: اختيار ملفات OBJ داخل أرشيف ZIP
يفتح المثال حزمة ZIP، يطبق فلترة على الإدخالات غير المجلدية، ثم يكتب الملفات المطابقة إلى وجهة واحدة أو إلى بنية آمنة حسب حاجة التنسيق. في الإنتاج، حدد سياسة واضحة للتعامل مع الأسماء المكررة.
استخراج ملفات OBJ من ZIP - C#
using Aspose.Zip;
using System;
using System.IO;
string archivePath = Path.GetFullPath("package.zip");
string outputDirectory = Path.GetFullPath("extracted-obj");
string[] allowedExtensions = { ".obj" };
const ulong MaxEntrySize = 100UL * 1024 * 1024;
Directory.CreateDirectory(outputDirectory);
using (var archive = new Archive(archivePath))
{
foreach (ArchiveEntry entry in archive.Entries)
{
if (entry.IsDirectory) continue;
string fileName = Path.GetFileName(entry.Name);
if (string.IsNullOrWhiteSpace(fileName)) continue;
string extension = Path.GetExtension(fileName);
if (!Array.Exists(
allowedExtensions,
value => string.Equals(value, extension, StringComparison.OrdinalIgnoreCase)))
{
continue;
}
if (entry.UncompressedSize > MaxEntrySize)
{
throw new InvalidDataException(
$"Entry '{fileName}' exceeds the 100 MB extraction limit.");
}
string destinationPath = Path.Combine(outputDirectory, fileName);
entry.Extract(destinationPath);
}
}
ملاحظات إنتاجية حول ملفات OBJ
قد يشير OBJ إلى ملف MTL وملفات textures. إذا احتاج التطبيق إلى أصل كامل، فاستخرج هذه الموارد المرافقة ضمن مسارات متحقق منها بدلا من افتراض أن .obj وحده يكفي.يحدد الامتداد ملفا مرشحا فقط. يجب التحقق من البنية الهندسية والمواد والمراجع بواسطة مكون 3D المسؤول عن قراءة الملف بعد استخراجه.
اعتبارات الأمان والخصوصية
عامل أسماء الإدخالات ومحتوى الأرشيف كمدخلات غير موثوقة. لا تدمج ArchiveEntry.Name مباشرة مع مجلد الإخراج؛ فقد يحتوي الاسم على مسار مطلق أو انتقال إلى مجلد أب. عند الحفاظ على المجلدات، حل المسار النهائي وتأكد من بقائه داخل الجذر المعتمد.اضبط حدودا للحجم المضغوط، الحجم بعد الاستخراج، عدد الإدخالات، وقت التنفيذ، والتزامن. استخدم تخزينا مؤقتا محدود الصلاحيات، نظف الناتج بعد الفشل، وتجنب تسجيل أسماء الملفات الخاصة أو كلمات المرور أو محتوى الملفات.
أسئلة شائعة حول استخراج OBJ
كيف أستخرج ملفات OBJ فقط من أرشيف ZIP في C#؟
افتح ZIP باستخدام Archive، استعرض Archive.Entries، طبق شرط .obj أو قاعدة التنسيق، ثم استدع Extract لكل مسار إخراج مقبول.
هل يتحقق Aspose.ZIP من محتوى ملف OBJ نفسه؟
لا. Aspose.ZIP يستعيد الملف من الأرشيف. قراءة بنية OBJ أو التحقق منها أو تحويلها مسؤولية مكون متخصص بذلك التنسيق.
هل يمكن استخدام الفكرة نفسها مع 7Z أو RAR أو TAR؟
نعم من حيث الفكرة، لكن يجب فتح كل حاوية بفئة Aspose.ZIP المناسبة لها، وقد تختلف أنواع الإدخالات والعمليات المتاحة.
كيف أتعامل مع أسماء OBJ المكررة؟
حدد السياسة قبل الاستخراج: رفض التكرار، إنشاء اسم فريد، أو الحفاظ على بنية مجلدات نسبية بعد التحقق من المسارات.
أدلة استخراج ملفات 3D ذات صلة
تصفح صفحات C# لاستخراج أصول 3D وملفات التصميم المخزنة داخل حزم ZIP.