Extrair conteúdo DOC de ZIP no .NET
Utilize Aspose.ZIP for .NET para abrir um arquivo ZIP, inspecionar suas entradas e restaurar somente arquivos DOC necessários à aplicação C#. Nesta página, extração significa localizar itens com extensão .doc 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 documentos, processamento de uploads, pacotes de relatórios e fluxos de gerenciamento de conteúdo. 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 DOC 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 documento.
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 .doc, 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 DOC 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
.doc. - 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 DOC 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 DOC de ZIP - C#
using Aspose.Zip;
using System;
using System.IO;
string archivePath = Path.GetFullPath("package.zip");
string outputDirectory = Path.GetFullPath("extracted-doc");
string[] allowedExtensions = { ".doc" };
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 DOC
Filtrar por extensão apenas identifica candidatos; isso não prova que o conteúdo seja válido ou seguro. Se o arquivo será exibido, indexado ou convertido, valide estrutura, codificação, conformidade e conteúdo com um componente de documentos.
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 DOC
Como extraio somente arquivos DOC 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 .doc e chame Extract para cada caminho de saída validado.
Aspose.ZIP valida o conteúdo interno do arquivo DOC 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 DOC?
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 Documentos
Consulte páginas C# para documentos e formatos de publicação armazenados em arquivos compactados.