aprender PHP logo

Nenhum produto encontrado nessa seleção.

Quando você cria uma aplicação completa em PHP, em algum momento será necessário copiar arquivos de uma pasta para outra, e nessa hora a função copy vai ajudar (e muito) o seu desenvolvimento.

Ela recebe apenas dois parâmetros (três, na verdade), o arquivo a ser copiado e o destino para o qual você está o enviando.

bool copy ( string $fonte, string $destino [, resource $contexto ] )

Veja a descrição dos parâmetros da função copy:

  • fonte – Caminho para o arquivo de origem.
  • destino – O caminho de destino. Se o destino for uma URL, a cópia pode falhar se o wrapper não suportar a sobrescrita de arquivos existentes.
  • contexto – Um válido resource de contexto criado com stream_context_create().

A função irá retornar true caso o arquivo seja copiado com sucesso. Em caso de falha, além de retornar false, irá lançar um erro descrevendo que não pode copiar o arquivo. Você pode utilizar o operador de controle de erros @ para ocultar os erros da função, mas lembre-se, isso é um típico caso onde você esconde os erros sabendo que eles podem ocorrer, e essa não é a melhor prática. Saiba mais sobre os erros no PHP em nossos artigos:

Como você pode ver nos parâmetros acima, você pode até mesmo copiar arquivos remotos utilizando uma URL (tanto para fonte quando destino).

Veja exemplos para copiar um arquivo de uma pasta para outra utilizando copy em PHP:

<?php
$imagem = 'imagens/imagem.jpg';
$nova_imagem = 'novas_imagens/novo_nome.jpg';

if ( @copy( $imagem, $nova_imagem ) ) {
    echo 'Arquivo copiado.';
} else {
    echo 'Arquivo não copiado.';
}
?>

Agora  veja outro exemplo, porém com arquivo remoto:

<?php
$imagem = 'http://www.exemplo.com/imagens/imagem.jpg';
$nova_imagem = 'novas_imagens/novo_nome.jpg';

if ( @copy( $imagem, $nova_imagem ) ) {
    echo 'Arquivo copiado.';
} else {
    echo 'Arquivo não copiado.';
}
?>

Simples assim!

Caso tenha alguma dúvida sobre o que eu descrevi acima, não hesite em deixar o seu comentário.

Até o próximo tutorial!