28
Upload de arquivos com PHP Quem nunca precisou fazer um site que tenha upload de algum tipo de arquivo que atire a primeira pedra! E hoje, você que não atirou a pedra, vai poder fazer o seu upload de arquivos – com validação e filtro de extensões e tamanho de arquivo – com o PHP! Vamos ao que interessa: Você vai precisar, basicamente, de duas coisas: um formulário pro usuário escolher o arquivo e um arquivo .php para receber os dados e salvar (ou não) o arquivo enviado numa pasta escolhida. Vou ensinar também a fazer um script que filtre a extensão do tipo de arquivo enviado e o tamanho dele. Duas coisas que você precisa saber antes de criar o seu script de upload e pensar que ele irá funcionar: 1. No PHP com configuração padrão o limite de uploads é de 2Mb então, teste com arquivos menores. 2. Em alguns servidores para você poder salvar um arquivo em uma pasta você precisa de permissão de usuário (também conhecido como CHMOD), é raro precisar configurar isso, mas se por obra divina o seu arquivo não estiver indo pra pasta que você definiu, tente “dar um CHMOD 777” na pasta de destino. Se você estiver testando seu script localmente, pode ignorar a segunda consideração e só se preocupar em enviar arquivos menores que 2Mb para testar a aplicação. Vamos ao formulário HTML para o usuário escolher o arquivo a ser enviado: $ thiago thiago thiago thiago belem belem belem belem-> blog blog blog blog (); (); (); (); Artigos e tutoriais sobre PHP, CakePHP, WordPress, jQuery, HTML e CSS 1 <form method="post" action="recebe_upload.php" enctype="multipart/form- data"> 2 <label>Arquivo</label> 3 <input type="file" name="arquivo" /> 4 <input type="submit" value="Enviar" /> Page 1 of 28 Upload de arquivos com PHP | Thiago Belem / Blog 14/03/2014 http://blog.thiagobelem.net/upload-de-arquivos-com-php/

Upload de Arquivos PHP

Embed Size (px)

Citation preview

  • Upload de arquivos com PHP

    Quem nunca precisou fazer um site que tenha upload de algum tipo de arquivo que atire a

    primeira pedra!

    E hoje, voc que no atirou a pedra, vai poder fazer o seu upload de arquivos com validao e

    filtro de extenses e tamanho de arquivo com o PHP!

    Vamos ao que interessa:

    Voc vai precisar, basicamente, de duas coisas: um formulrio pro usurio escolher o arquivo e

    um arquivo .php para receber os dados e salvar (ou no) o arquivo enviado numa pasta

    escolhida. Vou ensinar tambm a fazer um script que filtre a extenso do tipo de arquivo

    enviado e o tamanho dele.

    Duas coisas que voc precisa saber antes de criar o seu script de upload e pensar que ele ir

    funcionar:

    1. No PHP com configurao padro o limite de uploads de 2Mb ento, teste com arquivos

    menores.

    2. Em alguns servidores para voc poder salvar um arquivo em uma pasta voc precisa de

    permisso de usurio (tambm conhecido como CHMOD), raro precisar configurar isso,

    mas se por obra divina o seu arquivo no estiver indo pra pasta que voc definiu, tente

    dar um CHMOD 777 na pasta de destino.

    Se voc estiver testando seu script localmente, pode ignorar a segunda considerao e s se

    preocupar em enviar arquivos menores que 2Mb para testar a aplicao.

    Vamos ao formulrio HTML para o usurio escolher o arquivo a ser enviado:

    $$$$thiagothiagothiagothiagobelembelembelembelem---->>>>blogblogblogblog();();();();Artigos e tutoriais sobre PHP, CakePHP, WordPress, jQuery, HTML e CSS

    1

    2 Arquivo3 4

    Page 1 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • Salve este HTML dentro de arquivo com o nome que preferir.

    Agora vamos criar o arquivo que ir receber os dados e cuidar de tudo pra voc Salve-o como

    recebe_upload.php:

    5

    01

  • Com isso voc j tem um script que recebe os dados enviados pelo formulrio e que coloca (ou

    no) o arquivo na pasta.

    Eu sei que esse script pode parecer um pouco avanado pra quem t comeando, mas eu

    preferi fazer o bsico que todo mundo procura. Tentei colocar o mximo de comentrios e

    fazer uma sintaxe mais clara o possvel pra que vocs entendam.

    A parte que realmente faz o upload apenas o comando da linha 53 que o

    move_uploaded_file(). Vou explicar o nome e o uso dele:

    Quando voc envia um arquivo por um formulrio para o PHP ele vai direto para uma pasta

    temporria usando um nome nico e extenso .tmp (d uma olhada no valor da varivel $_FILES

    ['arquivo']['tmp_name']). Esse comando move o arquivo dessa pasta para a pasta que voc

    escolheu.

    Sei que essa parte do PHP (upload de arquivos) uma das coisas que mais d problema por a

    devido as diferentes configuraes de servidores Ento qualquer dvida s deixar um

    comentrio que eu tento te ajudar.

    Outra coisa importante que eu provavelmente no disse aqui no blog ainda: pra qualquer coisa

    no PHP existem, no mnimo, trs formas de se alcanar o mesmo objetivo. Ento no quero que

    encarem os meus scripts como a verdade absoluta. Eles so s um exemplo de um script

    eficiente e customizvel baseado na minha experincia.

    Espero que tenham gostado!

    Documentao Oficial:

    Funo move_uploaded_file() Move um arquivo que foi enviado para o servidor

    Funo time() Retorna o UNIX TIMESTAMP atual

    50 }5152 //Depoisverificasepossvelmoveroarquivoparaapastaescolhida53 if (move_uploaded_file($_FILES['arquivo']['tmp_name'],$_UP['pasta'].

    $nome_final)){54 //Uploadefetuadocomsucesso,exibeumamensagemeumlinkparao

    arquivo55 echo "Uploadefetuadocomsucesso!";56 echo 'Cliqueaquipara

    acessaroarquivo';57 }else {58 //Nofoipossvelfazeroupload,provavelmenteapastaestincorreta59 echo "Nofoipossvelenviaroarquivo,tentenovamente";60 }6162 }6364 ?>

    Page 3 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • Compartilhe: 20 Tweet 6 53Curtir

    Curtir isso:Gosto

    Be the first to like this.

    Funo strtolower() Altera uma string para ficar com as letras minsculas

    Funo array_search() Faz uma busca entre os elementos do array

    This entry was posted in PHP, Tutoriais on 13 de maro de 2009

    [http://blog.thiagobelem.net/upload-de-arquivos-com-php/] by Thiago Belem.

    About Thiago Belem

    Desenvolvedor a mais de 10 anos, trabalha como freelancer criando sites, sistemas e portais

    utilizando PHP, MySQL, CakePHP, WordPress e jQuery.

    View all posts by Thiago Belem

    94 thoughts on Upload de arquivos com PHP

    Parabns me ajudou muito.. fiz uma adaptaes ao meu caso mas t muito bom mesmo.

    RBShoT

    5 de julho de 2013 at 13:37

    Usei esse php pra enviar arquivos do meu celular para o computador,mas precisei enviar

    arquivos maiores que 2Mb. Ento eu mudei o tamanho na linha 7 de 2Mb para 8M (exemplo) e

    fui no meu arquivo php.ini e alterei tambm de 2Mb para 8M (upload_max_filesize = 8M). Aps

    reiniciar o servidor ficou tudo ok.

    Marcelo Santos

    5 de julho de 2013 at 8:09

    Daniel

    Page 4 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • else{

    //Primeiroverificasedevetrocaronomedoarquivo

    if($_UP['renomeia']==true){

    //CriaumnomebaseadonoUNIXTIMESTAMPatualecomextenso.jpg

    $nome_final=time().'.jpg';

    }else{

    //Mantmonomeoriginaldoarquivo

    $nome_final=$_FILES['arquivo']['name'];

    }

    Mesmo se o arquivo for png ele troca a extenso para jpg, isso no daria algum problema na

    imagem? Abraos.

    4 de julho de 2013 at 11:51

    Parabns! Um timo tutorial.

    Detalhando e comentando passos, foi o melhor que encontrei pela web.

    Bruno Leite

    28 de junho de 2013 at 11:44

    S quero agradecer pelo seu script, muito bom!

    Abrao

    fbaixo

    3 de junho de 2013 at 15:11

    Muito bom mesmo

    o mais simples, funcional e organizado que j encontrei at hoje..

    e bem simples de fazer melhorias de acordo com suas necessidades..

    parabens!

    Weber

    18 de maio de 2013 at 10:40

    Page 5 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • Muito Bom!

    BRUNO BORGES RUIZ 11 de maio de 2013 at 0:19

    Thiago muito boa a sua soluo, s tenho uma dvida dessa forma fico obrigado a enviar uma

    imagem sempre, e se a pessoa que estiver efetuando o cadastro no quiser colocar a imagem

    naquele momento?

    Emerson Santana6 de maio de 2013 at 16:38

    Ou vlw mesmo estou fazendo meu tcc em base no facebook, estou criando um facebook para a

    minha escola, chat ta m foda e com esse seu esquema posso colocar para os usuarios

    postarem oq quiserem

    Eliezer dos Santos Barbosa Capoto2 de maio de 2013 at 17:00

    Orra, muito bom e muito simples! Queria deixar a idia de se fazer um post com o PHP

    verificando o tamanho da foto em pixels (altura e largura)!

    Abrao!

    Isac 8 de novembro de 2011 at 4:12

    You couldnt be more on the level

    golf cubs 31 de outubro de 2011 at 16:43

    Page 6 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • Cara!!!! eu tava tentando e no conseguia qnto mais eu procurava mais confuso eu ficava!!!

    valeu!!!

    sucesso e td d bom!

    Abraos

    Junior Garcia 28 de outubro de 2011 at 21:41

    Excelente! Sou iniciante e deu tudo certo..parabns =)

    Poliana 27 de outubro de 2011 at 18:06

    Com este script da pra fazer upload de qualquer tipo de arquivo? Tipo um vdeo, um texto.txt,

    pdf, swf?

    Ccero Joceilton 26 de outubro de 2011 at 20:12

    Ol Thiago, muito bom o post, parabns.

    Ser que voc conseguiria me ajudar, estou configurando o Ajaxplorer

    (http://www.ajaxplorer.info/ ) um File Manager 100% Web e em PHP.

    O problema est bem na parte de upload, j configurei o PHP com os comandos:

    memory_limit = 256M

    post_max_size = 500M

    upload_max_filesize = 500M

    default_socket_timeout = 60

    upload_tmp_dir = D: \ TempDown // O Grupo IIS_Users tem total permisso na pasta temp.

    E mesmo assim eu no consigo mandar arquivos com mais de 15MB geralmente, alguns ele

    manda sem problema, outros como por exemplo, ele cria o arquivo na pasta temp e quando o

    upload termina ele some e no aparece na pasta da aplicao em outros casos (Arquivos

    muito grande) ele comea o upload mas o arquivo temp do php nem criado, e depois de algum

    tempo ele reseta o upload, comea novamente at um certo momento que d erro. No estou

    Renan P.26 de outubro de 2011 at 8:42

    Page 7 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • pedido ajuda com relao ao sistema Ajaxplorer mas sim no PHP e no IIS, estou usando o IIS 7.5

    Win 2008 R2 e PHP ultima verso liberada no site.

    Estou me esquecendo de algum tipo de configurao em algum lugar que possa estar causando

    esses problemas?

    Desde j Obrigado!

    This makes perfect sense!!!

    mesothelioma25 de outubro de 2011 at 0:22

    Realmente tima explicao. Desculpe a minha burrice mas no consegui entender em qual

    momento o script testa o tamanho do upload, sei que posso configurar para que ele aceite

    arquivos maiores, mas gostaria de entender em que momento ele compara o tamanho do

    upload com o configurado no $up?

    Grato, Joo.

    Haha, no tinha lido com a devida ateno, j encontrei, deixa pra l..

    Joo 19 de outubro de 2011 at 16:57

    Joo 21 de outubro de 2011 at 19:42

    estou tentando montar um site de upload de imagens mas asim as imagens sero subistituida

    o.O mas o sistema otimo e funciona muito bem

    Thyago4 de outubro de 2011 at 20:27

    Page 8 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • Ol , Esse upload Bom mas eu Tenho um asim jah mas se uma pessoa tiver o mesmo nome de

    imagem essa imagem subistituida se tiver soluo me avise por email ou por aqui mesmo

    obrigado

    Thyago4 de outubro de 2011 at 20:25

    Aguardando

    Felipe Carneiro4 de outubro de 2011 at 13:46

    Thiago Belem,

    Mano fiz tudo certinho liberei arquivos .rar e .zip, e liberei o tamanho dos arquivos para 500

    MB maz. Mas so que eu coloco um .rar de 3 MB ele entra certinho e quando eu colocar um .rar

    de 60 MB ele da esse error: Por favor, envie arquivos com as seguintes extenses: jpg, png, gif,

    rar ou zip.

    O que pode ser este error ai amigo? AGUARDO.

    Felipe Carneiro4 de outubro de 2011 at 13:45

    Testei e ocorreu este erro

    Strict Standards: Only variables should be passed by reference in

    C:\xampp\htdocs\recebe_upload.php on line 25

    Warning: move_uploaded_file(uploads/Lighthouse.jpg) [function.move-uploaded-file]: failed to

    open stream: No such file or directory in C:\xampp\htdocs\recebe_upload.php on line 44

    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move

    C:\xampp\tmp\phpFA6E.tmp to uploads/Lighthouse.jpg in

    gustavo 26 de setembro de 2011 at 0:13

    Page 9 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • C:\xampp\htdocs\recebe_upload.php on line 44

    No foi possvel enviar o arquivo, tente novamente

    Melhor s refazendo o mesmo! Parabns cara!

    Eduardo 24 de setembro de 2011 at 10:28

    E ae Thiago! Olha, est dando esse erro aqui! : Por favor, envie arquivos com as seguintes

    extenses: jpg, png ou gif

    mas fiz tudo certinho!

    Wellington Spock24 de agosto de 2011 at 6:37

    Deus te abenoe!! Thiago Belem!

    George Lucas Bentes 13 de agosto de 2011 at 14:32

    Thiago, boa tarde,

    Estou com o seguinte problema:

    Localmente: Localhost, funciona legal (envia o arquivo pra pasta td ok)

    mas quando hospedo (uolhost)

    ele da erro.

    PHP Warning: move_uploaded_file(Arquivos_uploads/Lighthouse.jpg) [function.move-uploaded-

    file]: failed to open stream: Permission denied in E:\home\linoartvis1\Web\recebe_upload_3.php

    on line 170 PHP Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move

    C:\Users\TEMPUO~1.695\AppData\Local\Temp\php4B82.tmp to

    Arquivos_uploads/Lighthouse.jpg in E:\home\linoartvis1\Web\recebe_upload_3.php on line 170

    Silas 10 de agosto de 2011 at 15:37

    Page 10 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • Ou diz q nao foi possivel conectar ao servidor.

    Ja efetuei atricuio 777 as minhas pastas, e continua com o problema. o Que pode ser.

    Muito Bom.. Funcionou perfeitamente.

    Meus parabns pela iniciativa.

    Tiago Faria Bicalho 9 de agosto de 2011 at 17:42

    Genial cara, deu uma grande ajuda, parabns!

    Marcos Rodrigues 3 de julho de 2011 at 12:29

    Ol meu caro Thiago,

    Amigo t tentando implementar isso, no para upload de arquivo em uma pasta, mas sim por

    email.

    Estou trabalhando em um Form que servir para enviar currculo. S que a parte de enviar por

    email depois me enrolou todo por causa da linha 53.

    C pode me dar um help a respeito disso?

    Forte abrao e parabns pelo excelente trabalho!

    Marcio8 de junho de 2011 at 13:15

    Thiagooo

    timo o post!

    timas dicaas

    Fernando10 de maio de 2011 at 11:17

    Page 11 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • Valeww meu..

    UMA PERGUNTA. Porque no upload de um arquivo maior que 100kb o servidor da error 500 e

    no grava e muito menos carrega o arquivo para pasta especificada?

    Alguma m configurao do seu servidor

    jakson 9 de maio de 2011 at 13:15

    Thiago Belem12 de maio de 2011 at 12:08

    Post author

    Thiago, boa noite !

    Parabns pelo artigo, funciona perfeitamente !

    Um abrao,

    Edu Brasil

    Eduardo 2 de maio de 2011 at 19:19

    Tem como colocar uma barra de progresso ?

    Israel 29 de abril de 2011 at 12:36

    Ol Thiago! Excelente artigo, me ajudou muito e funciona muito bem, mesmo eu sendo bem

    iniciante no assunto.

    Andressa 20 de abril de 2011 at 14:39

    Page 12 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • Eu gostaria de uma dica para fazer o seguinte: alterar o nome de todos os arquivos salvos mais

    ou menos assim nome_original+data/hora+.extensao.

    Vc poderia me ajudar? At tentei mexer em algumas coisas mas no entendo mto do assunto.

    Obrigada!

    Thiago, Parabns pelo site, extremamente til!

    Agora estou com uma dvida que pode ser simples. Gostaria que um email de confirmao

    fosse enviado junto ao anexo, muito complicado?

    Prado Du 30 de novembro de 2010 at 10:32

    Thiago! Parabns pelo seu tutorial! Estou utilizando aqui na empresa e me surpreendeu! Agora,

    tem como voc me explicar um pouco sobre o tamanho do arquivo? Estou tentando aumentar

    para aceitar arquivos at 10MB mas no estou conseguindo. Abraos!

    Monteirog12 19 de novembro de 2010 at 11:06

    PERFEITO!!! show de bola euq ue naum sou programador fiz funfar powerSANDRUS

    MARCELLUS

    Asd 10 de novembro de 2010 at 0:43

    Thiago , excelente seu trabalho !

    estou usando seu sistema ai de cima .

    e preciso saber , qual linha colocar pra ele enviar arq. mp3 acima de 2MB , como vc falou l.

    por favor amigo , me ajuda !

    bruno charpinel

    Dj-inovacao 7 de novembro de 2010 at 3:25

    Page 13 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • Cara Muito bom seu tutorial, mais estou com um poblema, aqui no local host do meu

    computador o codigo funciona perfeitamente, mais quando eu hospedo ele junto ao meu site

    ele para de funcionar d o seguinte erro

    Warning: move_uploaded_file(fotos/cori.jpg) [function.move-uploaded-file]: failed to open

    stream: Permission denied in /home/voltarel/public_html/recebe_upload.php on line 53

    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move

    /tmp/phpGvb1Wo to fotos/cori.jpg in /home/voltarel/public_html/recebe_upload.php on line 53

    No foi possvel enviar o arquivo, tente novamente

    j aconteceu com alguen

    Voc precisa dar permisso de escrita pra pasta de upload.

    Willian Luan 5 de novembro de 2010 at 12:48

    Thiago Belem5 de novembro de 2010 at 12:50

    Cara, meus parabns!! Voc um dos bons programadores que existem no Mundo! Eu j tenho

    esse conhecimento, sobre o que voc falou no artigo, mas me admira muito a forma simples de

    como voc coloca a informao para quem precisa aprender, alm de colaborar passando o

    conhecimento.

    Obrigado, abraos, Isack Raid.

    www.seudescobrimento.com 4 de novembro de 2010 at 20:20

    Noma 200.

    Login 16 de outubro de 2010 at 23:18

    Page 14 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • Boa dica!!! Me ajudou em um script no qual preciso comparar strings de um arquivo pr

    selecionado com registros na base de dados!!

    Obrigado!!

    Davi

    Davi Antunes 11 de outubro de 2010 at 19:20

    Cara, muito booommm!!!

    Valeu pela ajuda!!!

    Edson Sacramento 7 de outubro de 2010 at 17:52

    pouts eu te amo man!! te amooooooooo

    Marta 6 de outubro de 2010 at 20:28

    eu queria um script um php que eviasse arquivos de at 20GB para uma pasta dentro do

    servidor com o nome da pasta que vai receber os aquivos seja download se voce conseguir

    porfavor envie um e-mail para [email protected] e diga quanto custa que eu

    pago. mais tem que funcionar.

    Marcosrodregues 4 de setembro de 2010 at 19:49

    Excelente, ra o que realmente Eu procurava. Muito Obrigado amigo.

    Vininewday 4 de setembro de 2010 at 1:45

    Page 15 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • /* $nome_final = time().'.jpg'; ^^ aqui o motivo substitui para: */

    $nome_final = time().''.$_FILES['arq'] ['type'];

    /* ficaria tempo'+'extenso do arquivo original' ^^ se no der certo faz isso (pode ser conflito na

    variavel)

    $tipo=$_FILES['arq'] ['type'];

    $nome_final = time().''.$tipo;

    */

    Akihe 3 de agosto de 2010 at 11:48

    Infelizmente, quanto a isso, no tenho o que recomendar..

    Thiago Belem27 de julho de 2010 at 12:25

    tio artigo, fucionou 100% aqui!

    J pesquisei,j mexi, mas no consegui fazer manter a mesma extensao que a imagem tiha

    anteriormente, alguem poderia ajudar?

    Cara no tenho certeza, mas olha a lin 46

    46 $nome_final = time()..jpg;

    t salvando todas as imgs em jpg, s mudar ali!

    Adriano Angelo 27 de julho de 2010 at 0:17

    Mulambo 19 de setembro de 2010 at 22:09

    Page 16 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • Thiago, obrigado pela resposta! fcil fazer isso via Ajax? Tem algum sistem/script que vc

    recomende? Obrigado!

    Marcelo Maffezoli 27 de julho de 2010 at 0:55

    Esse popup que voc falou Javascript (client-side) e o PHP

    server-side No tem como fazer (a no ser que voc envie e trate o upload

    via AJAX).

    Thiago Belem20 de julho de 2010 at 1:47

    Thiago, parabns pelo post! Realmente o melhor e mais fcil de usar e entender que eu j

    encontrei! =)

    S uma coisa. Tem como ao termino do upload, ele no mostrar a mensagem em outra pgina,

    e sim com uma pop-up? Assim no precisa sair da pgina e quando o usurio der ok para fechar,

    ele j est na pgina novamente.

    Obrigado!

    Marcelo Maffezoli 20 de julho de 2010 at 0:37

    Thiago,

    Obrigado pelo post, foi o melhor upload de arquivo que j encontrei na net, bem explicativo,

    estou com apenas um problema. meu sistema faz upload de arquivos compactados, no array de

    extenso coloquei as permitidas (rar, zip, tar, tar.gz, etc), mas quando envio um arquivo, ele fica

    retornando erro na comparao da extenso, como se no fosse permitido. Abaixo trecho

    modificado, caso possa me ajudar.

    // Array com as extenses permitidas

    $_UP['extensoes'] = array('rar', 'zip', 'tar', 'tar.gz', 'bz2');

    Carine Monteiro 7 de julho de 2010 at 17:56

    Page 17 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • $extensao = strtolower(end(explode('.', $_FILES['arquivo']['name'])));

    if (array_search($extensao, $_UP['extensoes']) === false) {

    echo Por favor, envie arquivos com as seguintes extenses: rar, zip, tar, tar.gz, bz2;

    }

    Ol! primeiramente, parabns pelo tutorial!!

    Eu tambm estou com o mesmo problema! se puder responder tambm para

    [email protected] eu ficarei grato.

    abrao;

    Vocs podem trocar o if por:

    if (!in_array($extensao, $_UP['extensoes']))

    Lembrando que ele sempre vai pegar a ltima parte depois do ponto, ento

    arquivo.tar.gz tem a extenso gz.

    Abs

    Fernando 9 de dezembro de 2010 at 16:58

    Thiago Belem9 de dezembro de 2010 at 17:04

    Infelizmente no Rogrido O servidor (Apache) no tem como saber o tamanho do seu upload

    antes de receber todo o arquivo.

    Thiago Belem23 de junho de 2010 at 20:50

    Rodrigo 14 de junho de 2010 at 0:24

    Page 18 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • Vc sabe me dizer se o arquivo carregado antes de verificar a extensao e/ou tamanho? Imagine

    q vc est enviando um arquivo de 5 ou 8 Mb, necessrio enviar o arquivo pra s depois

    mostrar a mensagem de tamanho ou extensao nao permitida?

    Ola Thiago,

    tenho a intenso de salvar a imagem/foto com o tamanho normal, e com o tamanho reduzido

    (thumb). como faria para isso? tem como fazer no upload, ou tenho q mandar a imagem, e

    depois copia-l?

    obrigado e parabns pelo blog

    @Rafael

    Existem tutoriais aqui no blog de redimensionamento de fotos com PHP.. Use a busca.

    rafael 31 de maio de 2010 at 19:51

    Thiago Belem1 de junho de 2010 at 11:38

    Parabns!! tima explicao!!

    Salvou a minha vida hehe

    Abraos

    ellen 12 de maio de 2010 at 20:30

    Muito bom tutorial amigo, muito bem explicado e prtico funcionou direitinho para mim, estou

    querendo montar um sistema de upload de imagens para meu frum baseado neste daqui

    http://www.bestuniom.net/postertool/

    pL413R 3 de maio de 2010 at 7:19

    Page 19 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • sei que feito em curl, e tem uma funo interessante de adicionar uma marca dagua, queria

    um igual desses acima para poder upar em localhost e remotamente

    Thiago, parabns pelo artigo!

    Valeu!

    Lucas Moreira 29 de janeiro de 2010 at 20:35

    Ok pessoal deu tudo certo, mas infelizmente estamos nas mos de servidores

    se a imagem demorar a carregar o servidor da pau no processo, ai j outra

    histria, o problema que o PHP primeiro carrega essa imagem para o servidor e depois ele

    reduz, o que eu particulamente acho errado, essa imagem deveria ser tratada dentro de uma

    pasta temp da maquina do cliente utilizando os recursos da mesma, e depois sim j reduzida e

    muito mais leve, enviada para o servidor. O PHP no client-side ou seja ele no trabalha do

    lado cliente. Alguem conhece algum outro recurso que possa ser utilizado para reduzir essa

    imagem dentro de uma pasta temporria para posteriormente ser enviar para o servidor?

    Eduardo Miranda dos Santos 21 de janeiro de 2010 at 16:18

    Cara, to adorando seus artigos, comprei alguns cursos de php em vdeo aulas na web e to

    estudando a fundo as coisas, quero me tornar programador php =), e tipo, to a mais ou menos 5

    meses estudando j crio meus prprios sistemas, no inicio eu havia feito curso de dreamweaver

    avanado que tinha junto php mas num era o que eu queria eu quero aprender a fazer as

    coisas na unha, e com os novos cursos que eu comprei mais o seu blog eu to aprendendo isso

    valew

    Juliano Silva18 de novembro de 2009 at 3:10

    Tobias Tromm 14 de novembro de 2009 at 23:48

    Page 20 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • Teria como ao fazer o Upload do arquivo renomear ele mas no tirar a extenso?

    @Tobias Tromm

    s voc prestar ateno nas linhas 44~50.

    Abraos

    Thiago Belem15 de novembro de 2009 at 14:08

    Eu s preciso salvar os nomes finais, os que ele ta digitando e apagando no

    Assim que ele terminar de adicionar, qdo clicar em enviar ele vai registrar os nomes no BD

    @Charles

    Ento use apenas JavaScript para criar mais campos e depois salve com o PHP.

    Ol, sou iniciante nesta area, mas utilizei no meu sistema aki e fiz alguns ajustes,

    s que estou precisando fazer mais um ajuste, no caso seria assim,

    tenho no mesmo form, varias partes aonde se carregam as imagens, mas no necessrio o

    carregamento,

    gostaria de uma mudana no script desta forma:

    - Se no form for carregado a imagem, assim enviar e mostar a mesma;

    - Mas se nao for carregada a imagem, apenas deixar em branco.

    Charles Jefferson 18 de agosto de 2009 at 21:15

    Thiago Belem18 de agosto de 2009 at 22:40

    Ronny Suzin 31 de agosto de 2010 at 13:19

    Page 21 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • compreende meu raciocinio? obrigado aguardando resposta.

    Consegui, fiz alteraes, mudei como queria.

    Tenho uma outra dvida, me diga uma maneira fcil de fazer o seguinte:

    Tipo assim tenho um textbox onde o usurio vai digitar alguns nomes de pessoa, ao clicar no

    boto inserir ele joga abaixo nome dessa pessoa.

    Quero que fique assim, os nomes e a opo excluir do lado do nome:

    Joo

    Paulo

    Lucas

    Maria

    Pra alterar esse seu cdigo pra fazer isso, seria muito complicado? Tem uma maneira mais fcil

    de se fazer isso?

    Tava pensando tambm em abrir um pop-up e desse pop-up voltasse ao form inicial (mas no

    sei fazer isso sem deixar de atualizar o form)

    @Charles

    Voc vai precisar fazer isso com JavaScript e PHP (se quiser salvar a lista enquanto o usurio vai

    adicionando e removendo) pra isso voc vai precisar usar AJAX.

    Charles Jefferson 18 de agosto de 2009 at 17:46

    Thiago Belem18 de agosto de 2009 at 19:46

    Tenta a ento. http://www.fmt.to.gov.br/tela_upload.htm

    Charles Jefferson 13 de agosto de 2009 at 18:03

    Page 22 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • um site do governo, sou func. pblico e tou precisando de fazer algo do tipo veja

    (http://www.easyalgo.com/examples/eaflashupload/simpleupload.html )

    Colocar no meu form a opo da pessoa fazer upload, mas de vrios arquivos pra poder guardar

    no registro que ele vai cadastrar.

    O que tou querendo um sistema de cadastro de trabalho cientifico, onde a pessoa vai

    cadastrar uma pesquisa, s que nessa pesquisa ele vai anexar ao registro todas as informaes

    sobre sua pesquisa(arquivos de word, excel, fotos, audio, etc.)

    Ento minha dvida na questo de fazer isso vrias vezes no mesmo form.. achei alguns

    scripts de mltiplos arquivos, mas os que encontrei j so pr-definidos(maximo 3 ou 5), eu

    preciso de algo que no tenha limites, pois pode ser 1,2,3 ou 10 e que no fique aparecendo

    aquele monte de buttons file.

    Espero que expliquei claro ahh e obrigado a pela ateno.

    @Charles

    Infelizmente vai ter que ficar aparecendo o monte de buttons Voc pode ir adicionando de um

    em um (sem processar o upload) usando JavaScript para criar novos input fyle e depois usar o

    foreach no PHP para processar todos os uploads.

    No recomendado fazer esse esquema de vrios uploads de uma vez pois voc vai precisar

    configurar o servidor pra ele aguentar toda essa carga, afinal, se voc enviar 10 arquivos de

    3mb so 30mb de 1 s vez. Procure fazer um upload por vez e depois volte pra tela de upload

    caso o usurio queira cadastrar +1 arquivo.

    Thiago Belem13 de agosto de 2009 at 18:28

    Ol.. parabns pelo blog, tenho visto timos contedos por aqui.

    Tou precisando de ajuda, vc manja um pouco de Javascript? Baixando um exemplo na net, fiz

    algumas alteraes, s que est funcionando perfeitamente no Firefox mas no IE no

    Geralmente costuma ser o contrrio, no sei onde t o erro.

    Se puder dar uma olhada pra mim. http://10.169.3.3/tela_upload.htm

    Charles Jefferson 13 de agosto de 2009 at 15:02

    Page 23 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • @Charles

    O endereo que voc me passou um IP interno de rede Seria bom se voc falasse qual o

    problema e o que voc est tentando fazer.

    Thiago Belem13 de agosto de 2009 at 15:22

    estou tendo alguns problemas, na hora de enviar um arquivo retorna essas mensagens:

    Warning: move_uploaded_file(uploads/tracert.jpg) [function.move-uploaded-file]: failed to open

    stream: Permission denied in /home/a6958900/public_html/upload5/recebe_upload.php on line

    53

    e

    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move /tmp/phpFHfX9z

    to uploads/tracert.jpg in /home/a6958900/public_html/upload5/recebe_upload.php on line 53

    apenas copiei o que esta la em cima, nao alterei nenhuma linha.

    @Diego

    O problema copiar e colar um codigo que voc nem sabe o que faz ou como funciona Nunca

    faa isso a mesma coisa que voc sair repetindo uma frase em outra lingua sem saber o que

    ela significa.. vc pode ter problemas

    Leia o tpico novamente:

    Em alguns servidores para voc poder salvar um arquivo em uma pasta voc precisa de

    permisso de usurio (tambm conhecido como CHMOD), raro precisar configurar isso, mas se

    por obra divina o seu arquivo no estiver indo pra pasta que voc definiu, tente dar um CHMOD

    777 na pasta de destino.

    Diego 6 de agosto de 2009 at 17:41

    Thiago Belem6 de agosto de 2009 at 20:18

    Page 24 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • O mesmo problema da Julia MAia.

    Cara deu quase tudo certo, apenas a validao do tamanho da imagem que no bate

    coloco qualquer tamanho, por menor que seja, ele diz que est grande

    Agradeco se puder me ajudar!

    Brigado pelo tuto.!

    O que pode ser?

    @Thiago

    J identifiquei um pequeno problema na definio da varivel $_UP['tamanho'] s multiplic

    -la por 1024 que vai funcionar.. Atualizei o script.

    thiago 3 de agosto de 2009 at 16:19

    Thiago Belem4 de agosto de 2009 at 2:48

    Boa noite Tiago

    muito bom seu blog.. gostei demais das informaes

    porem preciso da sua ajuda

    fiz tudo certinho s que na hora de mover para a pasta uploads no meu servidor terra ele

    exibe o erro da condio if

    No foi possvel enviar o arquivo, tente novamente

    j verifiquei a pasta, habilitei opes da pasta uploads no servidor do terra

    enfim

    se for possivel me fornea uma orientao por favor

    desde j valeu pela fora

    abrao.,

    Wadson Helmer Favero 1 de agosto de 2009 at 1:51

    Page 25 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • @Wadson

    D uma olhada nesse outro artigo meu sobre o assunto, talvez fique mais fcil de entender

    como o Upload funciona:

    Upload de Arquivos Como tudo funciona

    Thiago Belem

    1 de agosto de 2009 at 2:42

    Ol, Thiago. O script estava igual ao seu tutorial. Realmente no consegui resolver (e o

    engraado que ele estava funcionando normalmente antes), ento eu retirei a verificao.

    Deve ser o servidor, acontece umas coisas bem bizarras com o Terra.

    Obrigado pela sua resposta.

    Um abrao.

    Diego

    17 de julho de 2009 at 20:49

    Ol, Thiago. No sei se estou com problemas de configurao no servidor, mas acontece que o

    seu script, que antes estava funcionando normalmente, comeou a enfrentar os erros que a Julia

    mencionou acima (coloco qualquer tamanho, por menor que seja, ele diz que est grande).

    Voc tem ideia do que pode ser?

    Agradeo pela ateno.

    Diego

    @Diego

    Verifica se voc est usando o script corretamente.. Verifica se a linha 37 est correta. Abraos

    Diego

    14 de julho de 2009 at 21:03

    Thiago Belem

    15 de julho de 2009 at 3:32

    Diego

    11 de julho de 2009 at 15:59

    Page 26 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • Thiago, parabns.

    Sempre que preciso trabalhar com PHP fuo no seu site primeiro porque seus tutoriais

    realmente ajudam demais.

    Valeu. Abrao!

    Opa, muito bacana seu esquema de up-load. Estou nesse momento, h dias, procurando alguma

    forma de enviar imagens pro servidor, e atravs do php, gerar um xml, que ser lido pelo flash.

    Poderia me dar um help neste problema?

    Uma observao: No sei nada de php. Sei alguma coisa de Flash e design.

    Agradeceria tambm, se possvel, me enviasse links de assuntos relacionados com a criao de

    um esquema que administrasse um site, enviando fotos, textos e links pra tudo ser montado

    num xml, e eu ler este arquivo no flash.

    Muito obrigado pela ateno e bom resto de semana!

    Flvio Martins

    Flvio Martins

    27 de maio de 2009 at 19:05

    @Julia

    Havia um errinho que j foi ajustado.

    Thiago Belem

    5 de abril de 2009 at 12:54

    Cara deu quase tudo certo, apenas a validao do tamanho da imagem que no bate coloco

    qualquer tamanho, por menor que seja, ele diz que est grande

    Julia Maia

    5 de abril de 2009 at 3:42

    Page 27 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/

  • Comments are closed.

    Agradeco se puder me ajudar!

    Brigado pelo tuto.!

    Muito legal seu script, mas gostaria de saber mais uma coisa, posso usar o mesmo script para

    fazer a atualizao dos dados?

    Rosicler

    20 de maro de 2009 at 14:03

    Cara, sensacional o script.

    Me economizou muito tempo de filosofia pra criar uma logica de upload de arquivos.

    Parabns.

    Valeu de novo!

    Andr

    14 de maro de 2009 at 16:43

    Page 28 of 28Upload de arquivos com PHP | Thiago Belem / Blog

    14/03/2014http://blog.thiagobelem.net/upload-de-arquivos-com-php/