Você está na página 1de 2

Upload de arquivos

A prática profissional das turmas de Desenvolvimento de Aplicações WEB refere-se a um portal de notícias a
ser desenvolvido em PHP e MySQL. O Portal exigirá uma aplicação “back-end” onde um usuário cadastrado
se logará no sistema para inserir, alterar ou excluir notícias. Cada notícia deverá possuir uma imagem
relacionada a ela. Para isto, é necessária a funcionalidade de inserção de imagens via upload de arquivo
para uma pasta de imagens do website. Isto pode ser feito utilizando-se alguns comandos de manipulação
de arquivos do PHP:

move_uploaded_file (Extraído de www.php.net)

(PHP 4 >= 4.0.3, PHP 5)

move_uploaded_file — Move um arquivo carregado para uma nova localização

Descrição
bool move_uploaded_file ( string $nomedoarquivo, string $destino )

Esta função primeiro checa o arquivo informado nomedoarquivo é um arquivo válido


uploadeado (significando que ele foi carregado pelo mecanismo do PHP de HTTP POST). Se o
arquivo é válido, ele será movido para o nomedoarquivo dado pelo destino.

Se nomedoarquivo não é um arquivo carregado válido, então não haverá nenhuma ação e
move_uploaded_file() irá retornar FALSE.

Se nomedoarquivo é um arquivo uploadeado válido e não pode ser movido por alguma razão,
nenhuma ação irá ocorrer, e move_uploaded_file() irá retornar FALSE. Adicionalmente, um
aviso será emitido.

Este tipo de confirmação é importante principalmente se existe alguma chance que qualquer
coisa feita com os arquivos carregados poderem revelar o seu conteúdo para o usuário, ou
mesmo para outros usuários no mesmo sistema.

Nota: Quando o safe-mode está ativo, o PHP verifica se o(s) arquivo(s) e/ou diretório(s) que
serão afetados por esta operação tem o mesmo UID (proprietário) do script que está sendo
executado.

Nota: move_uploaded_file() não é afetado pelas restrições de UIN normais do safe mode.
Isto não é inseguro porque move_uploaded_file() somente opera sobre arquivos carregados
pelo PHP.

Atenção: Se o arquivo destino já existir, então ele será sobrescrito.

Veja também is_uploaded_file() e a seção Manipulando o upload de arquivos para um exemplo


de utilização desta função.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>:: Upload File ::</title>
</head>
<body>
<?php
// Nas versões do PHP anteriores a 4.1.0, deve ser usado $HTTP_POST_FILES
// ao invés de $_FILES.
$file_types = array(
'image/pjpeg',
'image/jpeg',
'image/jpeg',
'image/gif',
'image/X-PNG',
'image/PNG',
'image/png',
'image/x-png',
'image/JPG',
'image/GIF',
'image/bmp',
'image/bmp'
);
if (isset($_GET['enviar']) && $_GET['enviar']=="Enviar") {
$uploaddir = 'C:/Arquivos de programas/EasyPHP1-8/www/web12/fotos/';
$uploadfile = $uploaddir.$_FILES['foto']['name'];
$teste = in_array($_FILES['foto']['type'], $file_types);
if ($teste) {
if (move_uploaded_file($_FILES['foto']['tmp_name'],
$uploaddir.$_FILES['foto']['name'])) {
print "<script type='text/javascript'>alert('O arquivo é valido e foi carregado com
sucesso');</script>";
} else {
print "<script type='text/javascript'>alert('Erro ao copiar arquivo');</script>";
}
} else print "<script type='text/javascript'>alert('Tipo de arquivo
inválido');</script>";
}
?>
<form name="form1" method="post" action="?enviar=Enviar" enctype="multipart/form-data">
<label for="foto">Selecione a imagem:</label>
<input name="foto" type="file" id="foto" />
<input type="submit" name="Submit" value="Enviar" />
</form>
</body>
</html>

Antes de executar o código acima, verifique se o Dreamweaver está configurado para trabalhar com a pasta
“web12” dentro de “www”. Verifique também se existe uma pasta “fotos” dentro da pasta “web12”, pois
esta pasta será a pasta onde serão copiadas as figuras selecionadas no formulário.

Este aplicativo possui um vetor de tipos de imagens para assegurar que o usuário só possa selecionar
imagens e não arquivos de outro tipo, como PDF, EXE, etc. Uma vez que o arquivo seja do tipo válido, ele
tenta copiar o arquivo de imagem selecionado para a pasta “fotos”. É importante ressaltar que esta pasta
deve ter permissão de escrita pelo script.

OBS: a superglobal $_FILES possui alguns elementos associados acerca do arquivo a ser
obtido através do formulário. Neste exemplo, utilizamos três deles:
$_FILES[‘arquivo’][‘name’], $_FILES[‘arquivo’][‘type’] e $_FILES[‘arquivo’][‘tmp_name’].
Existe também o $_FILES[‘arquivo’][‘size’] que recebe o valor correspondente ao tamanho do
arquivo em bytes.

Observe que no código acima, o formulário pede o modo “multipart/form-data” como tipo de codificação.