move_uploaded_file
(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)
move_uploaded_file — Move um arquivo enviado para uma nova localização
Descrição
Esta função faz uma verificação para garantir que o arquivo designado
por from
é um arquivo de envio válido
(que tenha sido enviado pelo mecanismo de envio POST HTTP do PHP).
Se o arquivo for válido, ele será movido para o nome de arquivo dado
por to
.
Este tipo de verificação é especialmente imporante se existir alguma chance de que qualquer coisa feita com os arquivos enviados possa revelar seus conteúdos ao usuário, ou mesmo para outros usuários no mesmo sistema.
Parâmetros
from
-
O nome do arquivo enviado.
to
-
O destino do arquivo movido.
Valor Retornado
Retorna true
em caso de sucesso.
Se from
não for um arquivo enviado válido,
nenhuma ação ocorrerá e
move_uploaded_file() retornará
false
.
Se from
for um arquivo enviado válido, mas
não puder ser movido por alguma razão, nenhuma ação ocorrerá e
move_uploaded_file() retornará
false
. Adicionalmente, um alerta será emitido.
Exemplos
Example #1 Enviando múltiplos arquivos
<?php
$uploads_dir = '/uploads';
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
// basename() pode evitar ataques no sistema de arquivos;
// valização e sanitização adicionais no nome do arquivo podem ser necessárias
$name = basename($_FILES["pictures"]["name"][$key]);
move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
}
?>
Notas
Note:
move_uploaded_file() é afetada por open_basedir. Entretanto, restrições são aplicadas apenas no caminho de
to
para permitir a movimentação de arquivos enviados nos quaisfrom
possa conflitar com tais restrições. move_uploaded_file() assegura a segurança desta operação permitindo que apenas arquivos enviados através do PHP possam ser movidos.
Se o arquivo de destino já existir, ele será sobrescrito.
Veja Também
- is_uploaded_file() - Informa se o arquivo foi enviado por POST HTTP
- rename() - Renomeia um arquivo ou diretório
- Consulteja Gerenciando envio de arquivos para um exemplo de uso básico