Upload de arquivos em PHP (uma única página)

Buenas,
O código abaixo faz upload de arquivos para uma pasta determinada. O envio é simples e muito útil quando se quer receber arquivos de outros usuários.
O código está todo comentado, fácil de se entender.
É só copiar e colar


<?PHP
//Se receber via POST o botão "btnEnviar" dá inicio ao processo de envio
//OBS: ao entrar na página não é executado porque ainda não foi clicado no botão "btnEnviar"
if($_POST["btnEnviar"]){
	//Recebe o caminho do arquivo selecionado
	$arquivo = $_FILES["flfArquivo"]["name"];
	//Verifica se foi selecionado algum arquivo
	if(!empty($arquivo)){
	//Verifica se a pasta "arquivos existe, se não existir cria a pasta"
	if(!is_dir("./arquivos")){
		mkdir("./".$dirName, 0755);
	}
	//Copia o arquivo com o nome temporário para a pasta "arquivos" com o nome original
	if(copy($_FILES["flfArquivo"]["tmp_name"], "./arquivos/".$_FILES["flfArquivo"]["name"])){
	//Avisa com um "alert" que o arquivo foi enviado com sucesso e volta para a página desejada, nesse caso a index.php
		echo "<script>
				alert('Arquivo enviado com sucesso.');
				location.href = 'index.php';
			</script>";
		}else{
			//Se não foi possivel copiar o arquivo avisa com um "alert" que houve um erro e volta para a página desejada(index.php neste caso)
			echo "<script>
					alert('Não foi possivel enviar o arquivo, tente novamente.');
					location.href = 'index.php';
				</script>";
		}
        //Se não foi selecionado nenhum arquivo pede-se ao usuário que selecione antes de enviar
        }else{
            echo "<script>alert('Escolha um arquivo');</script>";
        }
    }
?>

<!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 de arquivos</title>
</head>

<body>
<form name="form1" id="form1" enctype="multipart/form-data" method="post" action="">

    <p>
      <input type="file" name="flfArquivo" id="flfArquivo" />
  </p>
    <input type="submit" name="btnEnviar" id="btnEnviar" value="Submit" />
</form>

</body>
</html>




4 Comentários para “Upload de arquivos em PHP (uma única página)”



  1. O script funciona e é bem legal, entretanto esta dando um erro no inicio da página:
    Notice: Undefined index: btnEnviar in … line 5.
    A linha 5 tem o seguinte “if($_POST["btnEnviar"]){“.
    Você pode me ajudar?



  2. Alberto,
    O que está acontecendo é que o Apache recebe o “btnEnviar”, que ainda não foi criado pela página(Vai ser criado logo abaixo). Isso acontece por uma configuração do PHP.ini
    A solução mais ráida para esse caso(e mais fácil) é colocar um “@” na frente do POST.
    @$_POST["btnEnviar"];

    O “@” informa ao Apache para não mostrar o “NOTICE”.
    Quaquer coisa pergunta novamente.

    Abraço



  3. boa tarde, sou novato!

    copiei este script e diz que não foi possivel enviar arquivo quando clico, qual poderia ser o problema?

    agradeço



  4. Felipe,

    A mensagem que você recebe é a do “alert” do script ????
    Se você estiver rodando o script na plataforma Windows você pode ter problemas com permissões para criar a pasta arquivos. Caso não tenha criado a pasta tenta criar ela no mesmo diretório onde está o script.

Comente

  • tj:
    " Felipe, A mensagem que você recebe é a do... "
    Post: Upload de arquivos em PHP (uma única página)
  • felipe:
    " boa tarde, sou novato! copiei este script e diz que... "
    Post: Upload de arquivos em PHP (uma única página)
  • tj:
    " Alberto, O que está acontecendo é que o Apache recebe o... "
    Post: Upload de arquivos em PHP (uma única página)
  • Alberto:
    " O script funciona e é bem legal, entretanto esta... "
    Post: Upload de arquivos em PHP (uma única página)
  • Joyce:
    " POW!!! muito bom "
    Post: 50 Sites para downloads gratuitos de vetores
    

TWITTER
    • Sem itens