Através do PHP, os arquivos podem ser carregados no servidor.
Os exemplos neste capítulo são concluídos no projeto de teste e a estrutura de diretórios é:
test|-----upload # Diretório para upload de arquivo|-----form.html # Arquivo de formulário|-----upload_file.php # Código de upload PHP
Permitir que os usuários carreguem arquivos de um formulário é muito útil.
Dê uma olhada no seguinte formulário HTML para fazer upload de arquivos:
<html><head><meta charset="utf-8"><title>Tutorial do codificador (codercto.com)</title></head><body><form action="upload_file.php" method=" post " enctype="multipart/form-data"> <label for="file">Nome do arquivo:</label> <input type="file" name="file" id="file"><br> <tipo de entrada ="enviar" nome="enviar" value="Enviar"></form></body></html>
Salve o código acima no arquivo form.html.
Algumas notas sobre o formulário HTML acima estão listadas abaixo:
O atributo enctype da tag <form> especifica qual tipo de conteúdo usar ao enviar o formulário. Quando um formulário requer dados binários, como conteúdo de arquivo, use " multipart/form-data ".
O atributo type="file" da tag <input> especifica que a entrada deve ser processada como um arquivo. Por exemplo, ao visualizar em um navegador, você verá um botão de navegação próximo à caixa de entrada.
Nota: Permitir que os usuários carreguem arquivos é um enorme risco de segurança. Permita que apenas usuários confiáveis executem operações de upload de arquivos.
O arquivo "upload_file.php" contém código para upload de arquivos:
<?phpif ($_FILES["arquivo"]["erro"] > 0){ echo "Erro:" . $_FILES["arquivo"]["erro"] "<br>";}else{ echo ". Nome do arquivo de upload: " . $_FILES["file"]["name"] . "<br>"; echo "Tipo de arquivo: " . $_FILES["file"]["type"] . "<br>"; echo "Tamanho do arquivo: " . ($_FILES["file"]["size"] / 1024) . $_FILES[ "arquivo"]["nome_tmp"];}?>
Usando o array global $_FILES do PHP, você pode fazer upload de arquivos do computador cliente para um servidor remoto.
O primeiro parâmetro é o nome de entrada do formulário, e o segundo subscrito pode ser "nome", "tipo", "tamanho", "nome_tmp" ou "erro". Conforme mostrado abaixo:
$_FILES["file"]["name"] - o nome do arquivo enviado
$_FILES["file"]["type"] - Tipo de arquivo enviado
$_FILES["file"]["size"] - Tamanho do arquivo enviado, em bytes
$_FILES["file"]["tmp_name"] - O nome da cópia temporária do arquivo armazenado no servidor
$_FILES["file"]["error"] - código de erro causado pelo upload do arquivo
Esta é uma maneira muito simples de fazer upload de arquivos. Por motivos de segurança, você deve adicionar restrições sobre quem tem permissão para fazer upload de arquivos.
Neste script, adicionamos restrições ao upload de arquivos. Os usuários só podem fazer upload de arquivos .gif, .jpeg, .jpg, .png e o tamanho do arquivo deve ser inferior a 200 KB:
<?php// Sufixos de imagens enviadas permitidos $allowedExts = array("gif", "jpeg", "jpg", "png");$temp = explode(".", $_FILES["file"][" nome "]);$extension = end($temp); // Obtém o sufixo do arquivo if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["arquivo"]["tipo"] == "imagem/jpeg")|| ($_FILES["arquivo"]["tipo"] == "imagem/jpg")|| "arquivo"]["tipo"] == "imagem/pjpeg")|| ($_FILES["arquivo"]["tipo"] == "imagem/x-png")|| ($_FILES["file"]["type"] == "image/png"))&& ($_FILES["file"]["size"] < 204800) // Menos de 200 kb&& in_array($extension, $ permitidoExts)){ if ($_FILES["arquivo"]["erro"] > 0) { echo "Erro:: " . $_FILES["arquivo"]["erro"] . "<br>"; else { echo "Carregar nome do arquivo: " . "Tipo de arquivo: " . $_FILES["arquivo"]["tipo"] "<br>"; echo "Tamanho do arquivo: " ($_FILES["arquivo"]["tamanho"] / 1024) . " kB<br>"; echo "O local onde o arquivo está armazenado temporariamente: " . $_FILES["file"]["tmp_name"];
O exemplo acima cria uma cópia temporária do arquivo enviado na pasta temporária PHP do servidor.
Esta cópia temporária desaparecerá quando o script terminar. Para salvar o arquivo enviado, precisamos copiá-lo para outro local:
<?php// Sufixos de imagens enviadas permitidos $allowedExts = array("gif", "jpeg", "jpg", "png");$temp = explode(".", $_FILES["file"][" nome "]);echo $_FILES["file"]["size"];$extension = end($temp); // Obtém o sufixo do arquivo if ((($_FILES["arquivo"]["tipo"] == "imagem/gif")|| ($_FILES["arquivo"]["tipo"] == "imagem/jpeg")|| ($ _FILES["arquivo"]["tipo"] == "imagem/jpg")|| ($_FILES["arquivo"]["tipo"] == "imagem/pjpeg")|| ($_FILES["arquivo"]["tipo"] == "imagem/x-png")|| ($_FILES["arquivo"]["tipo"] == "imagem/png"))&& ($ _FILES["file"]["size"] < 204800) // Menos de 200 kb&& in_array($extension, $allowedExts)){ if ($_FILES["file"]["error"] > 0) { echo "Erro: " . $_FILES["file"]["error"] . : " . $_FILES["arquivo"]["nome"] . "<br>"; echo "Tipo de arquivo: " . $_FILES["arquivo"]["tipo"] . "<br>"; echo "Tamanho do arquivo: " . ($_FILES["file"]["size"] / 1024) . " echo "O local onde o arquivo está armazenado temporariamente: " . ["tmp_name "] . "<br>"; // Determina se o arquivo existe no diretório de upload no diretório atual // Se não houver nenhum diretório de upload, você precisa criá-lo. (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] " O arquivo já existe. "; } else { // Se o arquivo não existir no diretório de upload, carregue o arquivo no diretório de upload move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file "][ "nome"]); echo "O arquivo está armazenado em: " . "upload/" . $_FILES["arquivo"]["nome"]; } }}else{ echo "Formato de arquivo ilegal";}?>
O script acima verifica se o arquivo já existe. Caso não exista, ele copia o arquivo para um diretório chamado "upload".