Você faz o download utilizando a função header do PHP e todos seus atributos. Quando o arquivo chega, vem corrompido. A coisa fica mais confusa ainda porque a maioria dos formatos de arquivo funciona corretamente, mas os arquivos de imagem chegam corrompidos.
Tive esse problema e gostaria de compartilhar a solução encontrada:
Enviei um arquivo qualquer e comparei o tamanho. Vi que estava diferente (3 bytes a mais). Enviei um arquivo de texto e percebi que depois que abria utilizando o script, o arquivo de texto estava com uma linha a mais no início.
Procurei por todo o script e não achei nada. Quando fui em uma das includes encontrei o erro. No final da include, depois que fechava o PHP (?>), tinha uma linha a mais.
Pronto. Removi a linha e tudo funcionou perfeitamente :).
Isso acontece porque antes do comando header não pode ter um byte sequer. Ela indica o cabeçalho do arquivo, então deve ser a primeira coisa a ser carregada, ou então dá erro.
janeiro 13th, 2011 on 14:50
Vlw parcero! Deu certinho…
Estava com o mesmo problema e resolveu.
Abs…
junho 11th, 2011 on 12:38
Olá,
Muuuuiiiitooo obrigado por compartilhar a solução, estava com o mesmo problema.
Esse site é ótimo.
Abraços!
dezembro 7th, 2011 on 10:24
Olá Tiago
Estou com esse problema de corromper o arq no download mas não entendi sua solução. No meu código tenho linhas que verificam a existencia do arq e sua extenção, não pode ter tb essas linhas ?
dezembro 19th, 2011 on 16:29
Cara, você tem que verificar as linhas em branco antes da abertura do código (). Entendeu?
fevereiro 7th, 2012 on 12:46
Comigo ainda não consegui fazer funcionar.
Está dando arquivo corrompido nos tipos rar, zip, exe e doc. Porém, os .doc ainda abrem, tem as telas de confirmações mas abrem.
Baseado no tutorial seguinte:
http://scriptbrasil.com.br/forum/index.php?showtopic=96923
Lugar do download do exemplo:
http://www.scriptbrasil.com.br/download/codigo/6742/
março 7th, 2012 on 11:21
Bom, ví num outro forum que tem que ser editado o php.ini. Descomentar a linha extension=php_fileinfo.dll. Ainda não testei pq o gerente de T.I não está aqui no momento e so ele que tem acesso ao servidor mas se alguemquiser testar e depois postar um feedback.
julho 20th, 2013 on 09:10
Thiago Passos….muito obrigado pela dica.
Ajudou muito
setembro 5th, 2013 on 11:25
Muito boa sua dica, me ajudou bastante, abri um .jpg no notepad++ e vi que a primeira linha estava em branco, se retirar esta linha e salvar o .jpg novamente a foto abre normalmente.
outubro 9th, 2014 on 14:30
Muito obrigado pela dica.
É sempre bom compartilharmos conhecimentos.
Parabéns pela atitude. Sempre salvando minha vida
Abração
fevereiro 28th, 2015 on 11:45
Resolveu a vida aqui tbm.
Valeuuuu
maio 28th, 2015 on 10:08
Valeu… tava com o mesmo problema aqui.. foi só excluir as linhas em branco que funciou perfeitamente.
setembro 16th, 2016 on 12:01
MUuuuuuuuito obrigada.
Salvou o meu dia!!!
abraços
janeiro 31st, 2019 on 00:58
Rapaz, como dizem os mineiros: teve a manha!
Tinha resolvido temporariamente colocando ob_clean() antes de ler o arquivo e estava funcionando, mas acabei achando o “include do mal” que tinha a tal linha a mais.
Linha retirada, ob_clean() retirado e download ok!
Obrigado demais!