Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 6
Sexo: Masculino

Duvida sobre script Buscar arquivo, listar e baixar PHP

28-10-2016 10:05

Bom dia,

Eu estou com uma duvida em relação ao script sobre Buscar arquivo, listar e baixar PHP.
Quando eu faço a pesquisa, os arquivos aparecem, mas na hora em que eu faço o download, o arquivo abre mostrando uma mensagem de que o mesmo pode estar corrompido. Os arquivos são todos xls. Eu uso o XAMPP, fiz vários testes e até atualizei para a versão mais nova, mas mesmo assim continuo com o mesmo problema.


<form action="" method="POST"> buscar arquivos com.. <input type="text" name="arquivo" value=""> <input type="submit" name="busca"> </form> <?php if(isset($_GET['baixar'])) { extract($_GET); $arq = $baixar; function retorna_extensao($arq){ // função q pega a extensão do arquivo $arr = explode('.', $arq); $num = count($arr)-1; $ext = $arr[$num]; return $ext; } $ext = retorna_extensao($arq); switch($ext){ case "pdf": $var = "application/pdf"; break; case "exe": $var = "application/octet-stream"; break; case "zip": $var = "application/zip"; break; case "doc": $var = "application/msword"; break; case "xls": $var = "application/vnd.ms-excel"; break; case "ppt": $var = "application/vnd.ms-powerpoint"; break; case "gif": $var = "image/gif"; break; case "png": $var = "image/png"; break; case "jpeg": case "jpg": $var = "image/jpg"; break; default: $var = "application/force-download"; } if(file_exists($arq)){ // adição do header para download header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("Content-Type: $var"); header("Content-Disposition: attachment; filename=\"".basename($arq)."\";" ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($arq)); readfile($arq); } else { erro_JS('Erro ao tentar fazer download de arquivo!'); } } if(isset($_POST['arquivo'])!="") { $palavra = $_POST['arquivo']; $numero = 0; $diretorio = "ILL - Inspecao/"; foreach (glob($diretorio."*.*") as $arquivo) { $separa = explode("/", $arquivo); if(stristr($separa[1], $palavra)==TRUE) { print "<a href='testando.php?baixar=".$diretorio.$separa[1]."'>".$separa[1]."</a><br>"; $numero++; } } echo "foram encontrado(s) $numero arquivo(s)."; } ?>

Preciso de ajuda pessoal.
Fico no aguardo. Obrigado
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17670
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Duvida sobre script Buscar arquivo, listar e baixar PHP

28-10-2016 15:44

Vou verificar.
0
A melhor hospedagem para o seu site HostGator!
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17670
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Duvida sobre script Buscar arquivo, listar e baixar PHP

28-10-2016 16:29

Acho que descobri o erro. Primeiro, retire o espaço do nome da pasta.

Lá no nome da pasta troque

ILL - Inspecao

por

ILL-Inspecao

O script também tem outro erro. Permite que qualquer um possa escolher a pasta e arquivo que quer baixar. Ou seja, não estava baixando só o arquivo que está na pasta definida. Erro que já corrigi.

Agora o arquivo tem que ser dividido em dois:

envio.php

<form action="download.php" method="POST"> buscar arquivos com.. <input type="text" name="arquivo" value=""> <input type="submit" name="busca"> </form>

download.php

<?php ///////////////////////////////////////// envio if(isset($_POST['arquivo'])!="") { // diretório $diretorio = "ILL-Inspecao/"; $palavra = $_POST['arquivo']; $numero = 0; foreach (glob($diretorio."*.*") as $arquivo) { $separa = explode("/", $arquivo); if(stristr($separa[1], $palavra)==TRUE) { print "<a href='download.php?baixar=".$separa[1]."'>".$separa[1]."</a><br>"; $numero++; } } echo "foram encontrado(s) $numero arquivo(s)."; } ///////////////////////////////////////// envio ///////////////////////////////////////// download if(isset($_GET['baixar'])) { extract($_GET); // diretório $diretorio = "ILL-Inspecao/"; $arq = $diretorio.$baixar; function retorna_extensao($arq){ // função q pega a extensão do arquivo $arr = explode('.', $arq); $num = count($arr)-1; $ext = $arr[$num]; return $ext; } $ext = retorna_extensao($arq); switch($ext){ case "pdf": $var = "application/pdf"; break; case "exe": $var = "application/octet-stream"; break; case "zip": $var = "application/zip"; break; case "doc": $var = "application/msword"; break; case "xls": $var = "application/vnd.ms-excel"; break; case "ppt": $var = "application/vnd.ms-powerpoint"; break; case "gif": $var = "image/gif"; break; case "png": $var = "image/png"; break; case "jpeg": case "jpg": $var = "image/jpg"; break; default: $var = "application/force-download"; } if(file_exists($arq)){ // adição do header para download header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("Content-Type: $var"); header("Content-Disposition: attachment; filename=\"".basename($arq)."\";" ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($arq)); readfile($arq); } else { erro_JS('Erro ao tentar fazer download de arquivo!'); } } ///////////////////////////////////////// download ?>

0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 6
Sexo: Masculino

Re: Duvida sobre script Buscar arquivo, listar e baixar PHP

03-11-2016 10:08

Deu certo,

Mas eu precisei adicionar uns checkbox na pagina envio.php para selecionar a pasta a ser procurada e na pagina download.php eu adicionei condições para acessar as pastas. Mas o que acontece é que na hora de fazer o download, da erro. Estranho que a primeira que foi feita que é ILL-Inspecao faz o download normalmente, mas quando é escolhido outra pasta, da erro no download.

envio.php
<h1>Consulta de LUPs e ILLs</h1> <form action="download.php" method="POST"> <input type="checkbox" name="inspecao" value="">Inspeção <input type="checkbox" name="limpeza" value="">Limpeza <input type="checkbox" name="lubrificacao" value="">Lubrificação <input type="checkbox" name="lup" value="">LUP<br><br> <input type="text" name="arquivo" value=""> <input type="submit" name="busca"> </form>

download.php
<?php header("Content-Type: text/html; charset=ISO-8859-1", true); ///////////////////////////////////////// envio if(isset($_POST['inspecao'])){ if(isset($_POST['arquivo'])!="") { // diretório $diretorio = "ILL-Inspecao/"; $palavra = $_POST['arquivo']; $numero = 0; foreach (glob($diretorio."*.*") as $arquivo) { $separa = explode("/", $arquivo); if(stristr($separa[1], $palavra)==TRUE) { print "<a href='download.php?baixar=".$separa[1]."'>".$separa[1]."</a><br>"; $numero++; } } echo "foram encontrado(s) $numero arquivo(s)."; } } if(isset($_POST['limpeza'])){ if(isset($_POST['arquivo'])!="") { // diretório $diretorio = "ILL-Limpeza/"; $palavra = $_POST['arquivo']; $numero = 0; foreach (glob($diretorio."*.*") as $arquivo) { $separa = explode("/", $arquivo); if(stristr($separa[1], $palavra)==TRUE) { print "<a href='download.php?baixar=".$separa[1]."'>".$separa[1]."</a><br>"; $numero++; } } echo "foram encontrado(s) $numero arquivo(s)."; } } if(isset($_POST['lubrificacao'])){ if(isset($_POST['arquivo'])!="") { // diretório $diretorio = "ILL-Lubrificacao/"; $palavra = $_POST['arquivo']; $numero = 0; foreach (glob($diretorio."*.*") as $arquivo) { $separa = explode("/", $arquivo); if(stristr($separa[1], $palavra)==TRUE) { print "<a href='download.php?baixar=".$separa[1]."'>".$separa[1]."</a><br>"; $numero++; } } echo "foram encontrado(s) $numero arquivo(s)."; } } if(isset($_POST['lup'])){ if(isset($_POST['arquivo'])!="") { // diretório $diretorio = "LUPs/"; $palavra = $_POST['arquivo']; $numero = 0; foreach (glob($diretorio."*.*") as $arquivo) { $separa = explode("/", $arquivo); if(stristr($separa[1], $palavra)==TRUE) { print "<a href='download.php?baixar=".$separa[1]."'>".$separa[1]."</a><br>"; $numero++; } } echo "foram encontrado(s) $numero arquivo(s)."; } } ///////////////////////////////////////// envio ///////////////////////////////////////// download if(isset($_GET['baixar'])) { extract($_GET); // diretório $diretorio = "ILL-Inspecao/"; $arq = $diretorio.$baixar; function retorna_extensao($arq){ // função q pega a extensão do arquivo $arr = explode('.', $arq); $num = count($arr)-1; $ext = $arr[$num]; return $ext; } $ext = retorna_extensao($arq); switch($ext){ case "pdf": $var = "application/pdf"; break; case "exe": $var = "application/octet-stream"; break; case "zip": $var = "application/zip"; break; case "doc": $var = "application/msword"; break; case "xls": $var = "application/vnd.ms-excel"; break; case "ppt": $var = "application/vnd.ms-powerpoint"; break; case "gif": $var = "image/gif"; break; case "png": $var = "image/png"; break; case "jpeg": case "jpg": $var = "image/jpg"; break; default: $var = "application/force-download"; } if(file_exists($arq)){ // adição do header para download header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("Content-Type: $var"); header("Content-Disposition: attachment; filename=\"".basename($arq)."\";" ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($arq)); readfile($arq); } else { erro_JS('Erro ao tentar fazer download de arquivo!'); } } ///////////////////////////////////////// download ?>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17670
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Duvida sobre script Buscar arquivo, listar e baixar PHP

03-11-2016 11:09

Tem algumas coisas que precisam ser trocadas no seu formulário, por exemplo, você colocou um nome em cada checkbox, mas deixou os campo sem valores.

No seu caso como é somente uma opção entre as 4 o ideal é usar input radio.

O correto seria

<h1>Consulta de LUPs e ILLs</h1> <form action="download.php" method="POST"> <input type="radio" name="pasta" value="inspecao">Inspeção <input type="radio" name="pasta" value="limpeza">Limpeza <input type="radio" name="pasta" value="lubrificacao">Lubrificação <input type="radio" name="pasta" value="lup">LUP<br><br> <input type="text" name="arquivo" value=""> <input type="submit" name="busca"> </form>

Note que será enviado pasta e o value é o nome da pasta que deverá ter ai no seu sistema.

Já o arquivo download.php deve ficar assim:

<?php ///////////////////////////////////////// envio if(isset($_POST['arquivo'])!="") { // aqui são as pastas aceitas // se mudar os nomes no ckeckbox mude aqui também $diretorio = ""; $pastas = Array("inspecao", "limpeza", "lubrificacao", "lup"); // diretório if(isset($_POST['pasta']) && in_array($_POST['pasta'], $pastas)) { $diretorio = $_POST['pasta']."/"; } else { echo "<script>alert('Você precisa escolher uma pasta');history.back()</script>"; exit; } $palavra = $_POST['arquivo']; $numero = 0; foreach (glob($diretorio."*.*") as $arquivo) { $separa = explode("/", $arquivo); if(stristr($separa[1], $palavra)==TRUE) { print "<a href='download.php?baixar=".$separa[1]."'>".$separa[1]."</a><br>"; $numero++; } } echo "foram encontrado(s) $numero arquivo(s)."; } ///////////////////////////////////////// envio ///////////////////////////////////////// download if(isset($_GET['baixar'])) { extract($_GET); // diretório if(isset($_POST['pasta']) && in_array($_POST['pasta'], $pastas)) { $diretorio = $_POST['pasta']."/"; } else { echo "<script>alert('Você precisa escolher uma pasta');history.back()</script>"; exit; } $arq = $diretorio.$baixar; function retorna_extensao($arq){ // função q pega a extensão do arquivo $arr = explode('.', $arq); $num = count($arr)-1; $ext = $arr[$num]; return $ext; } $ext = retorna_extensao($arq); switch($ext){ case "pdf": $var = "application/pdf"; break; case "exe": $var = "application/octet-stream"; break; case "zip": $var = "application/zip"; break; case "doc": $var = "application/msword"; break; case "xls": $var = "application/vnd.ms-excel"; break; case "ppt": $var = "application/vnd.ms-powerpoint"; break; case "gif": $var = "image/gif"; break; case "png": $var = "image/png"; break; case "jpeg": case "jpg": $var = "image/jpg"; break; default: $var = "application/force-download"; } if(file_exists($arq)){ // adição do header para download header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("Content-Type: $var"); header("Content-Disposition: attachment; filename=\"".basename($arq)."\";" ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($arq)); readfile($arq); } else { erro_JS('Erro ao tentar fazer download de arquivo!'); } } ///////////////////////////////////////// download ?>

Observe a seguinte linha:

$pastas = Array("inspecao", "limpeza", "lubrificacao", "lup");


Essa linha no download.php deve ter os mesmos nomes das pastas definidas no value do input radio.
Essa verificação faz com que o usuário possa baixar arquivos somente das pastas definidas nesse array.
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 6
Sexo: Masculino

Re: Duvida sobre script Buscar arquivo, listar e baixar PHP

03-11-2016 11:55

O único problema é que ao tentar fazer o download do arquivo, aparece a mensagem "Você precisa escolher uma pasta" . E o download não é feito.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17670
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Duvida sobre script Buscar arquivo, listar e baixar PHP

03-11-2016 14:55

Essa mensagem só é mostrada se as pastas que podem ser escolhidas forem diferentes das opções na verificação.

<input type="radio" name="pasta" value="inspecao">Inspeção <input type="radio" name="pasta" value="limpeza">Limpeza <input type="radio" name="pasta" value="lubrificacao">Lubrificação <input type="radio" name="pasta" value="lup">LUP<br><br> $pastas = Array("inspecao", "limpeza", "lubrificacao", "lup");


Você alterou algum nome das pastas?
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 6
Sexo: Masculino

Re: Duvida sobre script Buscar arquivo, listar e baixar PHP

09-11-2016 11:05

As pastas estão com os mesmos nomes definidos no value do radio.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17670
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Duvida sobre script Buscar arquivo, listar e baixar PHP

09-11-2016 11:07

Tem como você postar o seu script para eu testar aqui?
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 6
Sexo: Masculino

Re: Duvida sobre script Buscar arquivo, listar e baixar PHP

09-11-2016 11:13

Ele lista os arquivos na hora da pesquisa, o problema é na hora de fazer o download.
Segue abaixo os scipts

envio.php

<h1>Consulta de LUPs e ILLs</h1> <form action="download.php" method="POST"> <input type="radio" name="pasta" value="inspecao">Inspeção <input type="radio" name="pasta" value="limpeza">Limpeza <input type="radio" name="pasta" value="lubrificacao">Lubrificação <input type="radio" name="pasta" value="lup">LUP<br><br> <input type="text" name="arquivo" value=""> <input type="submit" name="busca"> </form>

download.php

<?php header("Content-Type: text/html; charset=ISO-8859-1", true); ///////////////////////////////////////// envio if(isset($_POST['arquivo'])!="") { // aqui são as pastas aceitas // se mudar os nomes no ckeckbox mude aqui também $diretorio = ""; $pastas = Array("inspecao", "limpeza", "lubrificacao", "lup"); // diretório if(isset($_POST['pasta']) && in_array($_POST['pasta'], $pastas)) { $diretorio = $_POST['pasta']."/"; } else { echo "<script>alert('Você precisa escolher uma pasta');history.back()</script>"; exit; } $palavra = $_POST['arquivo']; $numero = 0; foreach (glob($diretorio."*.*") as $arquivo) { $separa = explode("/", $arquivo); if(stristr($separa[1], $palavra)==TRUE) { print "<a href='download.php?baixar=".$separa[1]."'>".$separa[1]."</a><br>"; $numero++; } } echo "foram encontrado(s) $numero arquivo(s)."; } ///////////////////////////////////////// envio ///////////////////////////////////////// download if(isset($_GET['baixar'])) { extract($_GET); // diretório if(isset($_POST['pasta']) && in_array($_POST['pasta'], $pastas)) { $diretorio = $_POST['pasta']."/"; } else { echo "<script>alert('Você precisa escolher uma pasta');history.back()</script>"; exit; } $arq = $diretorio.$baixar; function retorna_extensao($arq){ // função q pega a extensão do arquivo $arr = explode('.', $arq); $num = count($arr)-1; $ext = $arr[$num]; return $ext; } $ext = retorna_extensao($arq); switch($ext){ case "pdf": $var = "application/pdf"; break; case "exe": $var = "application/octet-stream"; break; case "zip": $var = "application/zip"; break; case "doc": $var = "application/msword"; break; case "xls": $var = "application/vnd.ms-excel"; break; case "ppt": $var = "application/vnd.ms-powerpoint"; break; case "gif": $var = "image/gif"; break; case "png": $var = "image/png"; break; case "jpeg": case "jpg": $var = "image/jpg"; break; default: $var = "application/force-download"; } if(file_exists($arq)){ // adição do header para download header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("Content-Type: $var"); header("Content-Disposition: attachment; filename=\"".basename($arq)."\";" ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($arq)); readfile($arq); } else { erro_JS('Erro ao tentar fazer download de arquivo!'); } } ///////////////////////////////////////// download ?>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17670
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Duvida sobre script Buscar arquivo, listar e baixar PHP

09-11-2016 11:47

Testa o seguinte download.php

<?php header("Content-Type: text/html; charset=ISO-8859-1", true); ///////////////////////////////////////// envio if(isset($_POST['arquivo'])!="") { // aqui são as pastas aceitas // se mudar os nomes no ckeckbox mude aqui também $diretorio = ""; $pastas = Array("inspecao", "limpeza", "lubrificacao", "lup"); // diretório if(isset($_POST['pasta']) && in_array($_POST['pasta'], $pastas)) { $diretorio = $_POST['pasta']."/"; } else { echo "<script>alert('Você precisa escolher uma pasta');history.back()</script>"; exit; } $palavra = $_POST['arquivo']; $numero = 0; foreach (glob($diretorio."*.*") as $arquivo) { $separa = explode("/", $arquivo); if(stristr($separa[1], $palavra)==TRUE) { print "<a href='teste2.php?baixar=".$separa[1]."&pasta=".$_POST['pasta']."'>".$separa[1]."</a><br>"; $numero++; } } echo "foram encontrado(s) $numero arquivo(s)."; } ///////////////////////////////////////// envio ///////////////////////////////////////// download if(isset($_GET['baixar'])) { extract($_GET); // diretório $pastas = Array("inspecao", "limpeza", "lubrificacao", "lup"); if(isset($_GET['pasta']) && in_array($_GET['pasta'], $pastas)) { $diretorio = $_GET['pasta']."/"; } else { echo "<script>alert('Você precisa escolher uma pasta');history.back()</script>"; exit; } $arq = $diretorio.$baixar; function retorna_extensao($arq){ // função q pega a extensão do arquivo $arr = explode('.', $arq); $num = count($arr)-1; $ext = $arr[$num]; return $ext; } $ext = retorna_extensao($arq); switch($ext){ case "pdf": $var = "application/pdf"; break; case "exe": $var = "application/octet-stream"; break; case "zip": $var = "application/zip"; break; case "doc": $var = "application/msword"; break; case "xls": $var = "application/vnd.ms-excel"; break; case "ppt": $var = "application/vnd.ms-powerpoint"; break; case "gif": $var = "image/gif"; break; case "png": $var = "image/png"; break; case "jpeg": case "jpg": $var = "image/jpg"; break; default: $var = "application/force-download"; } if(file_exists($arq)){ // adição do header para download header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("Content-Type: $var"); header("Content-Disposition: attachment; filename=\"".basename($arq)."\";" ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($arq)); readfile($arq); } else { erro_JS('Erro ao tentar fazer download de arquivo!'); } } ///////////////////////////////////////// download ?>

0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 6
Sexo: Masculino

Re: Duvida sobre script Buscar arquivo, listar e baixar PHP

16-11-2016 16:30

Boa tarde, deu certo. Muito obrigado, me ajudou muito.
Só uma duvida, mas é de outro assunto relacionado com php. É possível desenvolver uma pagina que envie os dados para um arquivo excel? Onde cada vez que essa pagina for preenchida, ela gere um novo arquivo em excel?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17670
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Duvida sobre script Buscar arquivo, listar e baixar PHP

16-11-2016 16:32

Nesse link você encontra um script para isso http://webcheatsheet.com/php/create_wor ... th_php.php
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado