Upload
internet
View
106
Download
0
Embed Size (px)
Citation preview
PHP
Aula 4
Prof. Naércio Filho
Técnico em Informática
www.funpar.ufpr.br:8080/naercio
PHP – SUMÁRIO
Upload de Arquivos– $_FILES
Manipulação de Arquivos– Abrir arquivos no servidor– Ler / escrever
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>
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
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"]; }?>
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.
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"]; } }?>
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";
}
?>
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");
?>
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)
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);
?>
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);
?>
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);
?>
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);
?>
PHP – Manipulando Arquivos
os dados podem ser escritos no arquivo usando fwrite();
<?php
$file = fopen("test.txt","w");
echo fwrite($file,"Escrevendo!");
fclose($file);
?>
PHP – Manipulando Arquivos
para excluir um arquivo, usa-se unlink();<?php
$file = "test.txt";
if (!unlink($file)) {
echo ("Erro deletando $file");
} else {
echo ("Deletado $file");
}
?>
PHP – Exercícios
1 - montar um formulário/script para fazer o upload de uma imagem. e em seguida mostrar a imagem e seu nome.
PHP – Exercícios
2 - usando a manipulação de arquivos, criar um arquivo de texto qualquer, abrir e ler seu conteúdo, e mostrar na tela.
PHP – Exercícios
3 - escrever em um arquivo alguma coisa.
PHP – Exercícios
4 - montar um formulário, escrever num arquivo os dados enviados por esse formulário, e então mostrar na tela.
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 [email protected] ou [email protected])