詳細検索

Como baixar vários arquivos de arquivos

Avatar
por すがピー
2 min de leitura
Tags php

Como baixar vários arquivos de arquivos
Traduzido do 日本語 • Ver original

Por exemplo, se você quiser baixar vários arquivos de imagem ao mesmo tempo, pode copiar os arquivos de imagem para um diretório temporário no servidor e arquivá-los para download. No entanto, isso vai copiar os arquivos de imagem um a um, o que pode sobrecarregar o armazenamento, e se houver um grande número de arquivos, vai levar muito tempo para copiar.

Então, vamos criar um symlink e arquivá-lo para cada diretório.

Primeiro, crie um diretório temporário.

$tmp_caminho = "/tmp/" . uniqid(rand()); 
$archive_dir = "(nome do diretório que você deseja especificar)"; 
$tmp_dir = $tmp_caminho . "/" . $archive_dir; 

A razão para separar o caminho para o diretório temporário e o nome do diretório temporário será explicada posteriormente.

Em seguida, crie um link simbólico para o arquivo de imagem no diretório temporário que você criou.

$filelists: Lista de nomes de arquivos de imagem
$$image_dir: O diretório de armazenamento do arquivo de imagem
foreach( $filelists como $image_nome ) : 
    $target = $image_dir. "/" . $img_nome; 
    $link = $tmp_dir . "/" . $img_nome; 
    symlink ($target, $link); 
}

Depois disso, vou arquivar esse diretório temporário também. Especialmente no caso de arquivos de imagem, o tamanho não muda muito mesmo quando comprimido, então se você arquivar com tar, o processo fica mais rápido porque não há processo de compressão. Ao adicionar "h" na opção do comando tar, você pode arquivar o link simbólico como uma entidade. Esse é o truque.

Definir o caminho do arquivo de arquivo
$tar_file = tempnam("/tmp", "DOWNLOAD"); 

Arquivo com comando tar
$command = "tar chf $tar_file -C $tmp_path $archive_dir";  
sistema( $command ); 

Neste momento, adicione "-C" às opções do comando tar. Agora vá para o diretório especificado e processe-o. Assim, você não será arquivado no caminho completo do diretório temporário.

Depois disso, é só baixar este arquivo.

Related Articles