Extrair conteúdo DAE de ZIP no .NET
Utilize Aspose.ZIP for .NET para abrir um arquivo ZIP, inspecionar suas entradas e restaurar somente arquivos DAE necessários à aplicação C#. Nesta página, extração significa localizar itens com extensão .dae dentro do contêiner ZIP e gravá-los em um destino controlado. Aspose.ZIP restaura o arquivo armazenado no arquivo compactado; ele não interpreta nem converte o conteúdo interno.
A extração seletiva é útil para ingestão de ativos 3D, pipelines de visualização, pacotes CAD e processamento automatizado de modelos. A aplicação pode ignorar entradas irrelevantes, verificar nomes e tamanhos e encaminhar os arquivos aprovados para a próxima etapa sem descompactar todo o pacote.
Como extrair arquivos DAE de ZIP com C#
Instale o
pacote Aspose.ZIP for .NET
e importe o namespace Aspose.Zip. Os metadados do arquivo ficam disponíveis antes da gravação, permitindo verificar ArchiveEntry.Name, ArchiveEntry.IsDirectory e ArchiveEntry.UncompressedSize antes de salvar arquivos de modelo 3D.
Package Manager Console Command
PM> Install-Package Aspose.Zip
Após a instalação, abra o ZIP com Archive, percorra Archive.Entries, selecione entradas que não sejam diretórios e tenham extensão .dae, e chame ArchiveEntry.Extract para cada destino aprovado. O exemplo usa apenas o nome final do arquivo, portanto caminhos armazenados no arquivo compactado não podem escrever fora da pasta de destino.
Etapas para extrair arquivos DAE em C#
- Defina o caminho do ZIP de origem e crie um diretório de saída isolado.
- Abra o pacote com a classe
Archive. - Percorra
Archive.Entriesem vez de extrair o pacote inteiro imediatamente. - Ignore diretórios e selecione nomes de arquivo com a extensão
.dae. - Crie um caminho de destino que permaneça dentro da raiz de saída aprovada.
- Rejeite entradas que excedam o limite configurado de tamanho extraído.
- Salve cada entrada aprovada com
ArchiveEntry.Extract.
Requisitos do sistema
- A supported .NET runtime on Windows, Linux, or macOS.
- Visual Studio, JetBrains Rider, Visual Studio Code, or another C# development environment.
- Aspose.ZIP for .NET installed through NuGet or referenced as an assembly.
- Read access to the source ZIP and write access to the destination directory.
- Clear size, execution-time, and temporary-storage limits for untrusted archives.
Exemplo em C#: extrair arquivos DAE selecionados de ZIP
O código abre um pacote ZIP, ignora diretórios, filtra entradas pela extensão permitida e grava os arquivos correspondentes em um único diretório de saída. Descartar os caminhos armazenados evita que segmentos de diretório superior controlem o destino. Em produção, defina também uma regra determinística para nomes duplicados.
Extrair arquivos DAE de ZIP - C#
using Aspose.Zip;
using System;
using System.IO;
string archivePath = Path.GetFullPath("package.zip");
string outputDirectory = Path.GetFullPath("extracted-dae");
string[] allowedExtensions = { ".dae" };
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);
}
}
Notas de implementação para arquivos DAE
Filtrar por extensão apenas identifica candidatos; isso não prova que o conteúdo seja válido ou seguro. Geometria, materiais, referências e estrutura interna devem ser validados por um componente 3D que compreenda o formato.
The example intentionally flattens archived paths. If two approved entries have the same final file name, ArchiveEntry.Extract can overwrite an existing file. Define a policy before extraction: reject duplicates, generate unique names, or preserve a validated relative folder structure.
Segurança e privacidade
Trate o ZIP enviado, os nomes de entrada e o conteúdo como dados não confiáveis. Não combine ArchiveEntry.Name diretamente com o diretório de saída, pois uma entrada pode conter caminho absoluto ou segmentos que sobem para diretórios superiores. O exemplo usa Path.GetFileName; se precisar preservar pastas, resolva o caminho final e confirme que ele permanece dentro da raiz aprovada.
Limite tamanho compactado, tamanho extraído por entrada e total, número de entradas, tempo de processamento e jobs paralelos. Use armazenamento temporário com permissões restritas, remova resultados parciais após falhas e evite registrar senhas, nomes privados ou conteúdo extraído.
FAQ sobre extração de arquivos DAE
Como extraio somente arquivos DAE de um arquivo ZIP em C#?
Abra o ZIP com Archive, percorra Archive.Entries, filtre entradas que não sejam diretórios pela extensão .dae e chame Extract para cada caminho de saída validado.
Aspose.ZIP valida o conteúdo interno do arquivo DAE extraído?
Não. Aspose.ZIP restaura o arquivo armazenado no ZIP. Ler, validar ou converter o conteúdo é responsabilidade de um componente que ofereça suporte ao formato.
O mesmo padrão de seleção pode ser usado com contêineres 7Z, RAR ou TAR?
O conceito é o mesmo, mas cada contêiner deve ser aberto com a classe de arquivo Aspose.ZIP correspondente. Tipos de entrada e operações de extração podem variar por formato.
Como lidar com nomes duplicados de arquivos DAE?
Defina a regra antes da extração: rejeitar duplicados, gerar nomes únicos ou preservar uma estrutura relativa de pastas já validada.
Guias Relacionados para Extração de Modelos 3D
Consulte páginas C# para ativos 3D e modelos técnicos frequentemente armazenados em ZIP.