Académique Documents
Professionnel Documents
Culture Documents
CursoPHPAula06
BrunoFalco brunogfalcao@gmail.com
UploaddeArquivos
n Uploaddearquivos
n Copiarumarquivodeumamquinalocalpara
oservidorweb.
n Exemplos:Imagens,videos,documentos,etc.
UploaddeArquivos
n Consideraessobreoformulrio:
nDeveserdeclaradocomomtododeenvioPOST.
nConteradiretivaenctype="multipart/formdata",para
"dizer"aobrowserqueestseenviandoarquivoseno
somenteostextosdoscamposdosformulrio
nConterpelomenos1campo"file".
Formulrionaprtica
Recebendoasinformaes
Informaes
$_FILES[arquivo][name]
Onomedoarquivooriginal
$_FILES[arquivo][type]
Otipomimedoarquivo,seonavegadordisponibilizar
Ex:umaimagem gif omimeseriaimage/gif
$_FILES[arquivo][size]
Otamanhoembytesdoarquivo
$_FILES[arquivo][tmp_name]
Onometemporriodoarquivo noservidor
$_FILES[arquivo][error]
Ocdigo deerroassociadoaesteupload
Diretriodeupload
n
Osarquivosenviadospeloformulrioseroguardadosnodiretrio
temporriodoservidor,amenosqueoutrolugarsejaespecificadocoma
opoupload_tmp_dirnophp.ini.Eocaminhoenomedecadaarquivo,so
ditosna$_FILES['arquivo']['tmp_name'].
Paramoveroarquivoparaumdiretriodesejadodeveseusarafuno
move_uploaded_file()(emversesanterioresa4.0.3useafunocopy)
Funesdemanipulao
nbool chmod (string$filename,int$mode)
nTentamudaraspermissesdoarquivoespecificadodo
arquivoparaodadoem modo .
nmode:mododeseguranadoarquivo,padro0777
nExemplo:
<?chmod (/diretorio/arquivo.txt", 0777);?>
nbool file_exists (string$nomedoarquivo)
nRetorna TRUE seoarquivooudiretrioexpecificado
Funesdemanipulao
nint unlink (string$nomedoarquivo)
nDeleta nomedoarquivo.
nbool rename (string$nomeantigo,string$novonome)
nTentarenomear$nomeantigopara$novonome.
nRetorna TRUE emcasodesucessoou
FALSE emfalhas.
nUtilizadotambmparamoverarquivo
nrename("/tmp/tmp_file.txt", "/docs/my_file.txt");
Cdigodoscript.php
Dica
n Paraacessarumnvelacimadeondeseecontrautilize../,sequer
acessarapartirdoraizutilize./
n Ex:
site
|imagens
||logo.jpg
|scripts
||upload.php
Emupload.phpodiretrioparasalvarimagensseriaescritocomo
../imagens
Exerccio
n Crieumformulrioondeumapessoadeveenviarumafotoeessa
serexibidanatela
Segurana
n Devemostermuitocuidadocomouploaddearquivospelomemo
motivoqueverificamosasinformaesinseridasemumformulrio
n Umscripsegurodeveverificarotamanhoeotipodoarquivo,por
exemplo
Checandootamanhodoarquivo
Tipodoarquivonoupload
n
Digamosquevoccrieumfilefieldondeumusurioenviaumafoto,eseele
mandaumarquivo.exe??
Devemos verificarseoarquivorealmenteumaimagem.Paraisso,voc
podeverificaraextensodonomedearquivoouotipodearquivo.
Cdigodaverificao
Segurana
n
Verificaraextensodonomedearquivonoseguro,entoomelhor
sempreverificaromimetipodoarquivo.
Nonossoexemplo,ondeaceitamosapenasimagensPNGomimetipo:
image/png
Cdigodaverificao
Nomesdosarquivos
n Definirumpadro
n Semespaosembranco,hifens,vriasletrasmaisculase
minsculas.
n Colocarunderscores(_)nolugardeespaosequetodasasletras
sejamminsculas.
n Importanteverificarseumarquivocomomesmonomejexiste.
Cdigodachecagemdonome
Exerccio
n Adicionaraoscriptdeuploaddearquivo,checagemdetamanho,
tipospermitidosesejexisteumarquivocomaquelenome;
n Porexemplo:saceitararquivosdotipojpgecomnomximo
500kb;
n Padroparanomedosarquivos:substituirespaoporunderscoree
todasasletrasminsculas.
Referncias
n [1]ManualOficialdoPHP:
http://www.php.net/manual/pt_BR/features.fileupload.php
n [2]ListaampladeMimeTypes:
http://www.arquivodecodigos.net/arquivo/ferramentas/mime_types
.php
http://www.webmastertoolkit.com/mimetypes.shtml