74 comentários

  1. leonardo

    O arquivo e enviado mais da uma mensagem erro “Erro ao enviar requisição!!!”

    1. Anderson Choren

      Bom dia Leonardo. O problema ocorre por alguns erros no código PHP.
      Faça as seguintes alterações e tudo vai funcionar corretamente:

      funcao_upload.php
      $nomeOriginal = $nomeOriginal . $infos[$i] . “.”; // Errado, variável $nomeOriginal não existe
      $nomeOriginal = $arquivo[“name”] . $infos[$i] . “.”; // Correto

      enviar_arquivo.php:
      if($enviar[‘erro’]){ // Errado, pode não existir um erro
      $data[‘msg’] = $enviar[‘erro’];
      }

      if(isset($enviar[‘erro’])){ Correto, se existir um erro mostra o erro
      $data[‘msg’] = $enviar[‘erro’];
      }

      Com essas alterações funciona perfeitamente. Um abraço

  2. William Ap. Brandino

    Gostaria de saber se com esse código é viável implementar o Upload via Drag ‘n Drop.

  3. Diego Rangel

    Olá, gostei muito e já estou utilizando, porém quando vou fazer o upload ele não enviar arquivos com mais de 2Mb. Sabe por que?

  4. @rodrigocurcino

    Rafael testei os arquivos aqui mas sempre reporta o seguinte erro: já dei uma olhada nos arquivos js e php e não consegui encontrar a causa do problema;

    Dei permissão total para a pasta e não adiantou;

    Tem alguma extensão ou modulo do PHP e apache que deva ser liberada em especifico para funcionar as classes?

    1. @rodrigocurcino

      Obs.: O erro é este: “Erro ao enviar requisição!!!”

  5. Gabriel P

    cara show de bola este script, porem teria como enviar os arquivos para um banco de dados?

  6. Cícero Joceilton

    como faço para exibir o link para download do arquivo após o upload como no 4shared?

  7. Ivan CR

    Parabéns pelo POST!
    Me ajudou muitooooo.

    Realizei algumas alterações nos arquivos disponibilizados aqui, onde consertei o erro que mesmo que envie a imagem, informava erro ou de json etc…

    O .arj contem os arquivos fornecidos aqui, mas com correções e funcional.
    Para acessar, segue link abaixo:
    http://www.sendspace.com/file/tl68gq

    Abraços!

    1. Ivan CR

      Realizado um ajusto na barra de progresso.
      Favor Ignorar o link acima e baixar por:
      http://www.sendspace.com/file/57hvm5

      Parabéns pelo Post!
      ICR.

    2. Allan

      Ivan pode me enviar os arquivos corrigidos ? O Link que vc postou expirou amigo, preciso muito pode me ajudar abraço!

  8. Nissius Ribas

    Bom Dia!
    Gostaria de saber, como posso fazer para ao selecionar o arquivo, já fazer o upload!
    Obrigado

  9. alessandro vinicius

    mt bom o post me ajudou mt,mas…

    como colocar um botao de cancelar o upload?

  10. Hugo

    Como fazer para aumentar o tamanho dos arquivos que serão upados?
    to precisando colocar para upar arquivos de no minimo 30 MB

  11. ALain

    Nao funciona com arquivos .mp3?

  12. Hugo

    Rafa, eu tentei de tds as formas. na index.php, no enviar_arquivo.php, no funcao_upload.php.

    Só nao tentei no tal php .ini pq nao sei aonde é isso…
    Não tem como vc nos ensinar da mesma maneira que fez aqui nessa página?
    Fazer um tutorial bem detalhado.
    Não digo entregar os arquivos de mão beijada, apenas mostrar como se faz.
    Estou entrando nesta área agora , e ja cheguei na pagina 60 do google e não consegui achar a maneira correta de se fazer esses arquivos grandes subirem.
    Hoje eu vejo a falta que faz um professor rsrsrsrs

    Desde já meu muito Obrigado.

  13. Hugo

    UP!!

  14. Helder

    Rafael,

    Boa solução. Essa solução tem algum copyright?

    Dependendo, tu poderias disponibilizar no github.

    Abração!

  15. Fabio Pereira

    Faço até questão de comentar cara.
    Perfeito…

  16. Hugo

    Quase 1 mês da minha ultima questão…
    Tem como dar um Help???

  17. Jonatas Oliveira Lima

    Aew rafael blz?

    É seguinte estou tendo problemas com o servidor local e o da minha hospedagem.

    No local ocorre tudo bem, mas no da minha hospedagem ocorre o seguinte erro: Erro ao enviar requisição.

    Qual será o motivo?
    Será que a hospedagem nao da surporte a JSON, ou Jquery?

    Abraço e parabens pelo blog.

  18. Jaguer Soares

    Opa,
    Alguém está com problema no IE9 ? , ele faz o Upload mas sem barra de progresso.
    FF e Chrome vai bem.

    Ps: Parabéns pelo Artigo

    Jaguer

  19. Rodrigo Couto

    Rafael, estou ficando louco já… rsrs…
    Aqui está dando erro de:
    – Uncaught TypeError: Object [object Object] has no method ‘ajaxForm’.

    Não sei mais onde mexer pra que funcione. Já comparei umas 300 vezes o seu arquivo com o meu e nada…

    Abraços…

  20. Rodrigo Couto

    Esqueci de postar o meu código…

    $(document).ready(function(){

    $(‘#btnEnviar’).click(function(){
    var arquivo = $(‘#arquivo’).val();
    extensoes_permitidas = new Array(“.zip”, “.rar”, “.pdf”);
    if (!arquivo) {
    $.post(“dlf.php”, {act: “ai”}, function(data) {
    $(“#lightbox-msg, #lightbox-panel-msg”).fadeIn(300);
    $(‘#lightbox-panel-msg’).load(“carq.php?v=”+data);
    });
    $(‘#barrafundo’).hide();
    }else{
    extensao = (arquivo.substring(arquivo.lastIndexOf(“.”))).toLowerCase();
    permitida = false;
    for (var i = 0; i < extensoes_permitidas.length; i++) {
    if (extensoes_permitidas[i] == extensao) {
    permitida = true;
    break;
    }
    }
    if (!permitida) {
    $.post("dlf.php", {act: "ae"}, function(data) {
    $("#lightbox-msg, #lightbox-panel-msg").fadeIn(300);
    $('#lightbox-panel-msg').load("carq.php?v="+data);
    });
    $('#barrafundo').hide();
    }else{

    var barra = $('#barra');
    $('#barrafundo').show();
    $('#formUpload').ajaxForm({
    uploadProgress: function(event, position, total, percentComplete) {
    barra.width(percentComplete*5);
    $('#porcentagem').html(percentComplete+'%');
    },
    success: function(data) {
    barra.width(500);
    $('#porcentagem').html('100%');
    if(data.sucesso == true){
    $.post("dlf.php", {act: "ao"}, function(data) {
    $("#lightbox-msg, #lightbox-panel-msg").fadeIn(300);
    $('#lightbox-panel-msg').load("carq.php?v="+data);
    });
    }else{
    var resp = data.msg;
    $.post("dlf.php", {act: ""+resp+""}, function(data) {
    $("#lightbox-msg, #lightbox-panel-msg").fadeIn(300);
    $('#lightbox-panel-msg').load("carq.php?v="+data);
    });
    $('#barrafundo').hide();
    }
    },
    error : function(){
    var respp = data.msg;
    $.post("dlf.php", {act: ""+respp+""}, function(data) {
    $("#lightbox-msg, #lightbox-panel-msg").fadeIn(300);
    $('#lightbox-panel-msg').load("carq.php?v="+data);
    });
    },
    dataType: 'json',
    url: 'enviararquivo.php',
    resetForm: true
    }).submit();

    }
    }
    });

    });

  21. mauricio

    Muito bom, funcionou perfeitamente parabéns!

  22. Oeslei

    Muito bom o tutorial, facil de ententer!!!

    Mas estou com um problema: nao esta sendo enviado corretamente o campo file pelo ajax.
    O php me deu a seguinte mensagem: “Notice: Undefined index: arquivo in C:\wamp\www\aptana\UPLOAD\enviar_arquivo.php on line 6″
    Entao adicionei essa linha:
    var_dump($_FILES);
    antes da linha:
    $arquivo = $_FILES[‘arquivo’];
    e deu como resultado:
    array
    empty

    Tentei mudar o enctype do formulario, mas nao mudou nada.
    Coloquei também essa linha:
    var_dump($_POST);
    e deu o resultado:
    array
    ‘arquivo’ => string ” (length=0)

    Alguem sabe como resolver este problema??? xD

  23. João Vítor Dias

    É possível personalizar o elemento ?

  24. Edwin

    Olá Rafael, também utilizo este script para upload de arquivos e estou tendo um problema.
    Ao testar o script localmente tudo funciona perfeitamente, mas ao testar no servidor e tentar enviar um arquivo com algum caracter especial no nome (exemplo: [name’sfile.jpg]) é retornado um erro de requisição (no caso no teste que fiz com seus arquivos, no meu caso retorna SyntaxError: JSON.parse: unexpected character), mas acredito que o erro seja o mesmo.
    Você sabe como validar esse envio de dados para solucionar o problema? Já estou tentando a algum tempo e pelos testes que venho fazendo o problema parece nem chegar no arquivo php, parece estar no próprio script do jQuery.Form. Já fez esse teste?

    Obrigado e fico no aguardo…
    Abraços.

  25. Geraldo

    Bom dia Rafael
    Estou com problema onde o arquivo é enviado, mas a barra de progresso não anda, e o retorno do arquivo não carrega, mas se eu clicar sem selecionar arquivo o erro vem, se eu colocar alguma extensão não permitida ele tambem não dar retorno, alguma ideia do que seria?
    e parabens pelo post.

    Geraldo

  26. Thiago

    Boa tarde,
    Parabéns, ótimo código!
    Consigo alterar o caminho do upload do arquivo para outro servidor, que não seja o web e sim um servidor de arquivos.
    Grato

  27. Thiago

    Boa tarde Rafael,
    Na linha 12 do arquivo ‘enviar_arquivo.php’, o segundo parâmetro é o diretório para onde realizamos o upload, eu poderia colocar um servidor da rede neste parâmetro. Por exemplo:
    $enviar = uploadFile($arquivo, ‘\\meuservidor\public\uploads/’, $tipos);

    Explicando melhor, o servidor web para onde realizo os uploads tem pouco espaço em disco, mas tem um servidor de arquivos que seria exatamente para receber estes arquivos.
    Ou se conseguir pensar em alguma outra solução e me dar uma dica.

    A linha 12 do arquivo é essa:
    /* Chama a função para enviar o arquivo */
    $enviar = uploadFile($arquivo, ‘uploads/’, $tipos);

    Valeu!

  28. Weliton ferreira

    Rafael, blz…
    Muito bom este seu script….
    Vc poderia me ajudar somente com uma coisa…?
    preciso que seja enviado também uma frase que faz ser digitada em uma caixa de texto…

    1. Weliton ferreira

      Conseguir achar a solução…
      valeu

  29. FERNANDOI

    Olá!

    Estou tentando criar um botão de upload de arquivos que envie documentos do Word, Excel, PDF diretamente do meu site.
    É para receber orçamentos e cotações.
    Gostaria de criar numa linguagem simples, HTML de preferência, pois não sei usar PHP.
    Um Form que faça upload de pelo menos 3 arquivos
    Preciso que o site envie os documentos diretamente para meu e-mail.
    Não há necessidade de campos nome, assunto, etc!
    Poderia me ajudar?

  30. Diego VIana

    Rafael, simplesmente perfeito.
    Estava tentando com o uploadfy e até deu certo, mas pra customizar os erros eu estava apanhando d+, até encontrar seu post com esta outra abordagem… Muito obrigado cara, sou seu fã… forte abraço…

  31. Luyrton

    Blz fera..
    Gostaria de tirar uma duvida em relação ao meu código..
    ao enviar a imagem, está enviando duas de cada vez. o que sera?
    no aguardo..
    ate+

  32. Peter

    Olá amigo parabéns pelo post gostaria de saber se têm como acrescentar vários inputs para enviar mais de 1 anexo e se tiver como além de enviar para a pasta de uploads se têm como enviar tbm para o email de destino ?

  33. Anderson Hofelmann

    Ótimo código. Só não tenho conseguido um exemplo para múltiplos arquivos…

  34. Ivanilda Prado

    Parabéns !! Bacana demais

    Gostaria que fize- se o envio de 8 arquivos selecionados – multiplos arquivos. – me ajude !!! Urgente!!

    Obrigada!!

  35. Luciano dii Souza

    Boa tarde, tudo bem, primeiramente gostaria de parabenizá-lo pelo seu trabalho, tem ajudado muitos desenvolvedores iniciantes a não se tornarem script kiddies, ou moleques de script, enfim, eu estou com uma dúvida e não consegui resposta pelos meios convencionais, você sabe se tem algum meio de colocar no meu site um botão de upload que façam os arquivos irem para o 4shared ou algum outro serviço de Cloud Hosting disponível na internet ?°
    Att,

    Luciano dii Souza WD.
    + 55 31 9831-3692

  36. Fernando Alves

    Boa tarde, Cara muito bom esse tutorial, parabéns e obrigado pelas dicas de ouro!

    Gostaria de saber se tem como adaptar esse script para fazer upload de vários arquivos, tipo quando clicar para procurar o arquivo poder selecionar vários arquivos?

    Obrigado!

  37. Enoque Mendes

    Sei que o post é meio antigo mas não custa perguntar… preciso salvar o nome do arquivo “upado” e algumas outras informações sobre o arquivo no banco de dados. Minha dúvida é, onde executo o script myql para inclusão no banco de dados?

  38. Thago

    Olá, amigo! Parabéns pelo artigo, muito bom!
    Só um dúvida… estou com o mesmo problema de alguns acima, da linha 19 do arquivo ‘upload.js’. Ele apresenta o erro “Erro ao enviar requisição!!!” ao término do upload, porém o arquivo é salvo normalmente na pasta nomeada.
    O que pode estar ocasionando este erro?
    Acrescentei a função para mostrar o erro na tela, e me retornou isso: http://i.snag.gy/iKjNg.jpg
    Agradeço desde já!
    Abraço

  39. elio

    falae rafael, bom dia.

    cara, preciso implementar um retorno de pagina, o que seria mais interessante, no jquery ou no php?
    outra duvida, se fosse um upload tipo do instagram, ele começa o upload no retorno da pagina. daria para fazer com este form?

    abraço
    elio

  40. Renato Costa

    Muito obrigado Rafael, me foi de muita ajuda! Demorei um dia inteiro para descobrir que eu estava usando uma variável $data no meu código, por isso dava erro no Json, mudei o nome para $datax e tudo funcionou perfeitamente!

Deixar um comentário