Manipulação de Arquivos PHP
O módulo de manipulação de arquivos PHP fornece a capacidade de criar , ler , gravar e excluir arquivos em um servidor com uma variedade de anexos.
É essencial usar esse recurso ao criar aplicativos da Web que precisam armazenar ou manipular dados em arquivos.
O objetivo aqui é fornecer a você uma compreensão clara da manipulação de arquivos PHP em seu aplicativo da Web para gerenciar arquivos da maneira mais eficiente e eficaz.
- Manipulação de arquivos PHP:
- Manipulação de arquivos PHP:
- PHP Readfile () Função:
- Arquivo PHP aberto – fopen():
- Arquivo PHP – fread():
- Arquivo PHP – fclose():
- Arquivo PHP - Ler linha única:
- Verificar Fim do Arquivo – feof():
- Arquivo PHP - Ler um único caractere:
- Gravação de arquivo PHP:
- Arquivo de gravação do PHP – fwrite():
- PHP Criar Arquivo – fopen():
- Atualização/Substituição de arquivo PHP:
- Carregamento de arquivo PHP:
- Configurar Arquivo PHP.ini:
- Criar formulário HTML:
- Script de upload de arquivos PHP:
- Verifique se o arquivo já existe:
- Limite de tamanho dos arquivos PHP:
- Limite de tipo de arquivo PHP:
Manipulação de Arquivos PHP
Você pode criar, ler, carregar, editar e modificar arquivos em PHP usando várias funções.
Manipule arquivos com cuidado!
Você deve ter muito cuidado ao manipular arquivos.
Os erros mais comuns são:
- Editando o arquivo errado.
- Criando um HDD cheio de dados inúteis.
- Excluir acidentalmente o conteúdo de um arquivo por engano.
Função Readfile() do PHP
Readfile() é uma função usada para ler arquivos do buffer de entrada e escrevê-los no buffer de saída.
Vamos supor que temos um arquivo de texto chamado acronym.txt armazenado no servidor, que possui o seguinte conteúdo:
PHP = PHP Hypertext Preprocessor SQL = Structured Query Language HTML = HyperText Markup Language CSS = Cascading Style Sheets JS = JavaScript JSON = JavaScript Object Notation AJAX = Asynchronous JavaScript and XML ASP = Active Server Page SVG = Scalable Vector Graphics XML = EXtensible Markup Language
O código PHP abaixo é usado para ler o arquivo do disco e gravá-lo no buffer (a função readfile() retorna o valor de quantos bytes foram lidos após o sucesso):
Example:
Podemos ler arquivos de diferentes locais de arquivo no computador usando a função readfile() :
Example:
Exemplo de Explicação
O exemplo acima lê o conteúdo de um arquivo chamado acronym.txt localizado no diretório /downloads/data/ no servidor usando a função readfile() .
- A função readfile() é uma função PHP integrada que lê o conteúdo de um arquivo e o envia diretamente para o navegador sem armazená-lo em uma variável. Neste caso, o conteúdo do arquivo “acronym.txt” será enviado diretamente para o navegador como texto.
- A função readfile() recebe um único parâmetro, que é o caminho para o arquivo a ser lido. Neste caso, o caminho é “ /downloads/data/acronym.txt “. O caminho é relativo ao diretório raiz do servidor, o que significa que o arquivo está localizado em um diretório chamado “ downloads ” dentro de um diretório chamado “ dados ”.
- A instrução echo é usada para enviar o conteúdo do arquivo para o navegador. A função readfile() retorna o número de bytes lidos do arquivo, o que não é importante neste caso, pois estamos interessados apenas em enviar o conteúdo do arquivo para o navegador.
Usar readfile() é útil se tudo o que você precisa fazer é ler o conteúdo de um arquivo.
Abrir Arquivo PHP – fopen()
Se você deseja abrir um arquivo usando um método melhor, pode usar a função fopen() .
Você obterá mais opções com esta função do que com a função readfile() .
Durante esta lição, abriremos um arquivo de texto conhecido como acronym.txt que criamos acima.
fopen() tem dois parâmetros, o primeiro dos quais especifica o nome do arquivo a ser aberto e o segundo dos quais identifica o modo no qual o arquivo deve ser aberto.
Conforme o exemplo abaixo, também é exibida uma mensagem caso a função fopen() não consiga abrir o arquivo especificado, indicando o erro:
Example:
Existem várias maneiras de abrir o arquivo, incluindo:
Modos | Visão geral |
r | Arquivo somente leitura. Inicialmente, o ponteiro do arquivo é colocado no início. |
c | Arquivo somente para gravação. Cria um novo arquivo se não existir ou apaga o conteúdo do arquivo existente se não existir. Inicialmente, o ponteiro do arquivo é colocado no início. |
a | Arquivo somente para gravação. Os dados no arquivo são preservados. Inicialmente, o ponteiro do arquivo é colocado no final. Se o arquivo não existir, crie outro |
x | Escreva apenas em um novo arquivo . O valor de retorno é FALSE e um erro será lançado se o arquivo já existir |
r+ | Arquivo de leitura/gravação . Inicialmente, o ponteiro do arquivo é colocado no início. |
w+ | Ler/escrever arquivo. Cria um novo arquivo se não existir ou apaga o conteúdo do arquivo existente se não existir. Inicialmente, o ponteiro do arquivo é colocado no início. |
a+ | Ler/escrever arquivo. Os dados no arquivo são preservados. Inicialmente, o ponteiro do arquivo é colocado no final. Se o arquivo não existir, crie outro |
x+ | Ler/escrever em um novo arquivo. Os dados no arquivo são preservados. Inicialmente, o ponteiro do arquivo é colocado no final. Se o arquivo não existir, crie outro |
Arquivo PHP – fread()
Quando fread() é chamado, ele lê o conteúdo de um arquivo que já está aberto.
PHP fread() recebe dois parâmetros, o primeiro dos quais é o nome do arquivo que deve ser lido e o segundo especifica quantos bytes serão lidos de uma vez.
Aqui está o código PHP que lê todo o conteúdo de um arquivo acronym.txt da seguinte forma:
fread($file,filesize(“acronym.txt”));
Arquivo PHP – fclose()
Para fechar um arquivo aberto, usamos a função fclose() .
Sempre que você terminar de trabalhar em um arquivo, é uma boa prática de programação fechá-lo.
Você não deseja que um arquivo aberto ocupe espaço em seu servidor e consuma recursos enquanto está em execução.
Para usar o método fclose() , precisamos passar para ele o nome do arquivo que estamos tentando fechar (ou uma variável que contenha o nome do arquivo):
<?php $file = fopen(“acronym.txt”, “r”); // There is a code that needs to be executed…. fclose($file); ?>
Arquivo PHP - Ler Linha Única
Fgets() é uma função que lê uma linha de um arquivo por vez do disco.
Aqui está um exemplo de saída da primeira linha do arquivo acronym.txt a seguir:
Example:
Verificar Fim do Arquivo – feof()
Uma função feof() é usada para verificar se um arquivo atingiu o final do arquivo ( EOF ).
O uso da função feof() permite que você percorra os dados com comprimento desconhecido de maneira eficiente.
Segue um exemplo de leitura do arquivo acronym.txt linha por linha, até chegar ao final do arquivo:
Example:
Arquivo PHP - Ler um único caractere
Usamos a função fgetc() quando queremos ler um único caractere de um arquivo.
Aqui está um exemplo de como o arquivo acronym.txt é lido caractere por caractere até chegar ao final do arquivo:
Example:
Exemplo de Explicação
O exemplo acima lê o conteúdo de um arquivo chamado acronym.txt usando a função fopen() .
- A função fopen() retorna um identificador de arquivo, que é armazenado na variável $file – Se o arquivo não puder ser aberto, a função die() é chamada, que gera uma mensagem de erro para o navegador e encerra o script.
- O parâmetro “ r ” passado para a função fopen() especifica que o arquivo deve ser aberto em modo somente leitura.
- O loop while é usado para ler o arquivo caractere por caractere até que o final do arquivo seja alcançado.
- A função feof() é usada para determinar se o fim do arquivo foi alcançado.
- A função fgetc() é usada para ler um caractere do identificador de arquivo e a instrução echo envia o caractere para o navegador.
- Por fim, a função fclose() é usada para fechar o identificador de arquivo.
Gravação de arquivo PHP
Nesta seção do artigo, vamos criar um arquivo PHP e gravar dados nele.
Veremos algumas das diferentes funções e parâmetros que são usados ao criar e gravar dados em arquivos PHP.
A primeira coisa que você deve verificar ao tentar executar este código é se seu arquivo PHP recebeu acesso para gravar informações em um disco rígido.
Arquivo de gravação do PHP – fwrite ()
Para gravar em um arquivo, você pode usar a função fwrite() em seu programa.
fwrite() aceita dois parâmetros.
- O primeiro contém o nome do arquivo a ser gravado.
- o segundo contém a string a ser gravada.
O exemplo a seguir cria um novo arquivo chamado names.txt com os nomes de algumas pessoas:
Example:
O arquivo names.txt foi gravado duas vezes durante esse processo. Enviamos a string $txt toda vez que tentamos gravar no arquivo, que continha primeiro a string “ Bill Gates ” e depois a string “ Jeff Bezos “.
Assim que terminamos de escrever, usamos a função fclose() para fechar o arquivo.
Aqui está a aparência do arquivo names.txt se o abrirmos:
Bill Gates Jeff Bezos
PHP Criar Arquivo – fopen()
O arquivo PHP fopen() é usado para criar um novo arquivo – Pode parecer confuso para você, mas no PHP é possível criar um arquivo usando a mesma função usada para abri-lo.
Quando você usa fopen() para abrir um arquivo que não existe, se o arquivo estiver sendo aberto para escrever ( w ) ou anexar ( a ), ele criará o arquivo para você.
Aqui está um exemplo de como criar um novo arquivo chamado newfile.txt seguindo as instruções abaixo.
Ele será criado no mesmo diretório onde está localizado o código PHP e terá o seguinte nome:
Example:
Atualização/Substituição de Arquivo PHP
Como nomes.txt contém alguns dados, pode-se mostrar o que acontece quando um arquivo é aberto para acesso à escrita enquanto já estamos escrevendo outros dados nele.
Os dados do arquivo existente serão apagados e um novo arquivo será criado do zero.
Vamos abrir nosso arquivo existente names.txt e vamos gravar alguns dados nele da seguinte forma:
Example:
Agora, se abríssemos o arquivo names.txt , tanto Bill Gates quanto Jeff Bezos teriam desaparecido, e apenas os dados que acabamos de escrever permaneceriam:
Bernard Arnault Elon Musk
Upload de arquivo PHP
O upload de arquivos tornou-se parte integrante de muitos aplicativos da Web na era digital atual, permitindo que os usuários compartilhem, armazenem e acessem arquivos pela Internet.
Nesta seção, você aprenderá como criar sistemas de upload de arquivos PHP eficientes e seguros, seja você iniciante em PHP ou um desenvolvedor experiente.
Examinaremos como criar um formulário HTML para entrada de arquivos, como processar os arquivos no lado do servidor e como validar e proteger os arquivos após o upload.
Configurar Arquivo PHP.ini
A primeira coisa que você deve fazer é certificar-se de que o PHP está configurado para permitir uploads de arquivos.
A diretiva file_uploads pode ser encontrada em seu arquivo php.ini . Certifique-se de que esteja definido como Ligado.
file_uploads = On
Criar formulário HTML
Para o formulário HTML existem algumas regras que precisam ser seguidas:
- O método deve ser definido para postar no formulário.
- Também é necessário incluir o seguinte atributo no formulário: enctype=”multipart/form-data” . Especifica que tipo de conteúdo deve ser usado ao enviar o formulário.
- Se você não atender aos requisitos acima, não poderá fazer upload de arquivos.
- Campos de entrada com atributos type=”file” são exibidos como controles de seleção de arquivo com um botão “ Browse ” próximo a eles.
- Estamos enviando os dados para um arquivo chamado imageUpload.php , que criaremos na próxima etapa.
Agora, você precisará criar um formulário HTML que permitirá aos visitantes selecionar o arquivo de imagem que gostariam de enviar.
Abaixo está o código de exemplo:
Example:
Script de upload de arquivos PHP
Example:
A seguir está uma explicação do script PHP:
- $dir = “uploads/” – especifica o local de onde o arquivo será carregado.
- O parâmetro $file especifica a localização do arquivo que será carregado.
- $upload_status = 1 ainda não foi usado (será usado no futuro).
- $imgFileType consiste em uma string que contém a extensão do arquivo da imagem (em letras minúsculas).
A próxima coisa que você deve fazer é determinar se o arquivo de imagem é uma imagem real ou se é uma imagem falsa.
Verifique se o arquivo já existe
Agora podemos adicionar algumas restrições.
Nosso primeiro passo será verificar se o arquivo já existe na pasta “ uploads ” do servidor.
Se isso acontecer, uma mensagem de erro será exibida e o valor de $upload_status será definido como 0 como resultado:
Example:
Limite de tamanho dos arquivos PHP
No formulário HTML acima, há um campo denominado imageToUpload que permite aos visitantes fazer upload de arquivos.
A próxima coisa que queremos fazer é verificar o tamanho do arquivo.
Uma mensagem de erro será exibida se o tamanho do arquivo exceder 500 KB e um status de 0 for definido como upload_status se o tamanho do arquivo exceder 500 KB:
Example:
Limite de tipo de arquivo PHP
Example:
Example:
Exemplo de Explicação
No exemplo acima, primeiro definimos o diretório onde o arquivo carregado será armazenado e construímos o caminho do arquivo concatenando o caminho do diretório e o nome base do arquivo carregado.
Em seguida, o script verifica se o formulário enviado possui um botão “ enviar ” e se o arquivo carregado é uma imagem real, chamando a função “ getimagesize() ” no nome do arquivo temporário.
Se o arquivo for uma imagem, o tipo MIME é repetido para o usuário e a variável “ upload_status ” é definida como 1. Caso contrário, uma mensagem de erro é exibida e a variável “upload_status” é definida como 0.
Em seguida, o script verifica se o arquivo já existe no diretório de destino. Em caso afirmativo, uma mensagem de erro é exibida e a variável “upload_status” é definida como 0.
O script também verifica se o tamanho do arquivo é maior que 500 KB e permite apenas o upload de determinados formatos de arquivo (JPG, JPEG, PNG e GIF).
Por fim, verificamos se a variável upload_status está definida como 0 por um erro. Se for, uma mensagem de erro é exibida. Se tudo estiver bem, o script tentará mover o arquivo carregado para o diretório de destino usando a função move_uploaded_file() .