O documento discute o upload e manipulação de arquivos no PHP. Ele explica como fazer upload de arquivos usando o array $_FILES, como manipular arquivos abertos no servidor usando funções como fopen(), fread(), fwrite() e unlink(), e fornece exemplos de código.
2. PHP – SUMÁRIO
Upload de Arquivos
– $_FILES
Manipulação de Arquivos
– Abrir arquivos no servidor
– Ler / escrever
3. PHP – Upload de Arquivos
Envio de Arquivos para o Servidor.
Consistem em um formulário html e um script para
manipular esse arquivo.
<html>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
Arquivo:
<input type="file" name="arquivo" id="arquivo" />
<br>
<input type="submit"/>
</form>
</body>
</html>
4. PHP – Upload de Arquivos
Detalhes do Formulário
– A tag HTML <form> precisa ter uma opção content-type
com o valor "multipart/form-data" para o arquivo ser
enviado
– a tag <input> precisa ser especificada do tipo file type="file"
– o upload de arquivos pode ser uma grande brecha de
segurança num sistema, por isso é recomendado que
apenas os usuários conhecidos possam fazer upload
5. PHP – Upload de Arquivos
No arquivo que recebe o formulário, devemos usar o
array (bidimensional) $_FILES, este irá conter os
dados do arquivo que foi enviado para o servidor.
<?php
if ($_FILES["file"]["error"] > 0) {
echo "Error: " . $_FILES["file"]["error"] . "<br />";
} else {
echo "Arquivo: " . $_FILES["arquivo"]["name"] . "<br />";
echo "Tipo: " . $_FILES["arquivo"]["type"] . "<br />";
echo "Tamanho: " . ($_FILES["arquivo"]["size"] / 1024) . " Kb<br />";
echo "Arquivo Temporário: " . $_FILES["arquivo"]["tmp_name"];
}
?>
6. PHP – Upload de Arquivos
O array $_FILES é indexado da seguinte forma:
– o primeiro índice é igual ao name dado ao input no
formulário
– no segundo nível ele esta indexado pelas propriedades do
arquivo "name", "type", "size", "tmp_name" or "error"
$_FILES["arquivo"]["name"] - O nome do Arquivo.
$_FILES["arquivo"]["type"] - O Tipo do Arquivo.
$_FILES["arquivo"]["size"] - O Tamanho do Arquivo em Bytes.
$_FILES["arquivo"]["tmp_name"] - O nome temporario dado ao arquivo no servidor.
$_FILES["arquivo"]["error"] - A Mensagem de erro caso exista.
7. PHP – Upload de Arquivos
Após feito o upload é necessário copiar o arquivo temporário,
para seu real destino, porque senão será excluído assim que
terminar a execução do script
<?php
if ($_FILES["arquivo"]["error"] > 0) {
echo "Codigo de Erro: " . $_FILES["arquivo"]["error"] . "<br />";
} else {
if (file_exists("upload/" . $_FILES["arquivo"]["name"])) {
echo $_FILES["arquivo"]["name"] . " Arquivo já existente. ";
} else {
move_uploaded_file($_FILES["arquivo"]["tmp_name"],
"upload/" . $_FILES["arquivo"]["name"]);
echo "Armazenado em: " . "upload/" . $_FILES["arquivo"]["name"];
}
}
?>
8. PHP – Upload de Arquivos
como medida de segurança podem ser
adicionados filtros pelo tipo de arquivo e pelo
tamanho.
<?php
if (($_FILES["arquivo"]["type"] == "image/gif")
|| ($_FILES["arquivo"]["type"] == "image/pjpeg")
&& ($_FILES["arquivo"]["size"] < 20000)) {
// codigo de cópia
} else {
echo "Arquivo inválido";
}
?>
9. PHP – Manipulando Arquivos
Manipulando Arquivos no Servidor
Em alguns casos há necessidade de ler ou
escrever em um arquivo no servidor
– fopen() é usado para abrir um arquivo
seu primeiro parâmetro é o nome do arquivo e o
segundo o modo como esse arquivo será aberto.
<?php
$file=fopen("test.txt","r");
?>
10. PHP – Manipulando Arquivos
Modos de abrir um arquivo
r - Somente Leitura, a partir do inicio
r+ - Modo de Leitura e Escrita, a partir do inicio
w - Somente escrita, abre e limpa um arquivo ja existente, ou cria um
novo arquivo se este nao existir
w+ - Modo de Leitura e Escrita, abre e limpa um arquivo ja existente,
ou cria um novo arquivo se este nao existir
a - Modo de escrita, e começa a escrever a partir do final do arquivo,
ou cria um novo arquivo se este nao existir
a+ - Modo de Leitura e Escrita, e começa a escrever a partir do final
do arquivo, ou cria um novo arquivo se este nao existir
x - Somente Escrita, cria um novo arquivo, retorna False caso o
arquivo ja exista
x+ - Modo de Leitura e Escrita, cria um novo arquivo, retorna False
caso o arquivo ja exista
Se fopen() nao conseguir abrir o arquivo, retorna 0 (false)
11. PHP – Manipulando Arquivos
Após utilizar um arquivo é necessário fecha-
lo, para isso usa-se fclose();
<?php
$file = fopen("test.txt","r");
//código a ser executado
fclose($file);
?>
12. PHP – Manipulando Arquivos
Lendo um arquivo é possível saber quando
este não contém mais dados, usando feof()
(end-of-file)
<?php
$file = fopen("test.txt", "r");
while(!feof($file)){
echo fgets($file). "<br />";
}
fclose($file);
?>
13. PHP – Manipulando Arquivos
Para ler o conteúdo do arquivo linha por
linha usa-se fgets(), em cada interação será
selecionada uma linha do arquivo
<?php
$file = fopen("test.txt", "r");
while(!feof($file)){
echo fgets($file). "<br />";
}
fclose($file);
?>
14. PHP – Manipulando Arquivos
podemos também ler um arquivo caractere
por caractere com a função fgetc();
<?php
$file=fopen("test.txt","r");
while (!feof($file)){
echo fgetc($file);
}
fclose($file);
?>
15. PHP – Manipulando Arquivos
os dados podem ser escritos no arquivo
usando fwrite();
<?php
$file = fopen("test.txt","w");
echo fwrite($file,"Escrevendo!");
fclose($file);
?>
20. PHP – Exercícios
4 - montar um formulário, escrever num
arquivo os dados enviados por esse
formulário, e então mostrar na tela.
21. PHP – Exercícios
5 - montar um arquivo de Texto com os meses do
ano, fazer upload desse arquivo, montar uma função
para ler esse arquivo e armazenar os dados em um
vetor (manter a função num arquivo para fazer um
include) em seguida mostrar na tela todas as
posições do Array usando o foreach.
(para entregar, enviar por email para naerciof@ufpr.br
ou naercio@funpar.ufpr.br)