Como faço para listar os arquivos do ftp em um formulario
É o seguinte, eu preciso de um formulario onde os fornecedores consigam fazer download de alguns arquivos de uma determinada pasta do ftp, alguém sabe como fazer?
comentários (0)
suspender
Lista de Respostas:
23/03/2010 4:35pm
(~14 anos atrás)
(~14 anos atrás)
<?php $remote_dir='.'; // Caminho para o diretório remoto $ftp_server = 'ftp.dominio.com'; // FTP do destino $ftp_user_name = 'nome_de_usuario'; $ftp_user_pass = 'senha_usuario'; // Conexão $conn_id = ftp_connect($ftp_server); // login $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); // listando arquivos do diretório $contents = ftp_nlist($conn_id, $remote_dir); // exibindo foreach($contents as $file) echo '<br />' . $file; // fecha a conexão ftp_close($conn_id);
Para fazer um download, adicione um link a cada arquivo e no PHP use assim
<?php // define some variables $local_file = 'php://stdout'; $server_file = isset($_GET['arquivo'])?$_GET['arquivo']:NULL; if($server_file!=NULL) { $remote_dir='.'; // Caminho para o diretório remoto $ftp_server = 'ftp.dominio.com'; // FTP do destino $ftp_user_name = 'nome_de_usuario'; $ftp_user_pass = 'senha_usuario'; // conectando $conn_id = ftp_connect($ftp_server); // login $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); // efetuando o download if (!ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) { echo "Ocorreu um erro\n"; } // fecha a conexão ftp_close($conn_id); exit; ?>
Para maiores detalhes consulte o manual
http://br2.php.net/ftp
23/03/2010 4:53pm
(~14 anos atrás)
(~14 anos atrás)
Na verdade ele aparece os nomes dos arquivos só, num a opção de download...
23/03/2010 4:59pm
(~14 anos atrás)
(~14 anos atrás)
Como eu havia dito na mensagem anterior
é preciso personalizar a exibição.
tente trocar
por
coloque o segundo código em um arquivo separado chamado download.php
é preciso personalizar a exibição.
tente trocar
// exibindo foreach($contents as $file) echo '<br />' . $file;
por
// exibindo echo ''; foreach($contents as $file) echo '
- <a href="/download.php?arquvio='. $file .'">' . $file .'</a>
'; echo '';
coloque o segundo código em um arquivo separado chamado download.php
24/03/2010 5:07pm
(~14 anos atrás)
(~14 anos atrás)
Po, vlw hein cara, ajudou muito, é isso mesmo
25/03/2010 1:53pm
(~14 anos atrás)
(~14 anos atrás)
O pessoal precisa desenrolar mais a questão dos estudos. Pedem uma solução aqui, mas, quando não dá certo, não se esforçam pra descobrir mais sobre o código. É como se fosse entregar de "Bandeja" as coisas.
Não estou falando especificamente do Rafael Santos, mas, vejo dezenas de casos aqui, que a pessoa pede um "auxílio", mais, que na realidade, quer é uma assessoria completa no código.
Temos que valorizar mais a linguagem e os programadores e procurar nos esforçar mais para resolvermos as nossas dúvidas. É óbvio que ninguém sabe tudo; temos dúvidas sim, mas, também, temos que nos esforçar e dá uma pesquisada ou até mesmo, a partir daquela dica inicial, explorar por conta própria as dúvidas.
É isso. Por favor, não se sinta ofendido Rafael, estou apenas querendo ajudar o pessoal a gostar mais de estudar. Mais sempre que precisar, estou aqui pra ajudar no que eu posso.
Abração!
Não estou falando especificamente do Rafael Santos, mas, vejo dezenas de casos aqui, que a pessoa pede um "auxílio", mais, que na realidade, quer é uma assessoria completa no código.
Temos que valorizar mais a linguagem e os programadores e procurar nos esforçar mais para resolvermos as nossas dúvidas. É óbvio que ninguém sabe tudo; temos dúvidas sim, mas, também, temos que nos esforçar e dá uma pesquisada ou até mesmo, a partir daquela dica inicial, explorar por conta própria as dúvidas.
É isso. Por favor, não se sinta ofendido Rafael, estou apenas querendo ajudar o pessoal a gostar mais de estudar. Mais sempre que precisar, estou aqui pra ajudar no que eu posso.
Abração!
25/03/2010 6:08pm
(~14 anos atrás)
(~14 anos atrás)
tudo bem, Matheus, eu entendo e acho que vc esta certo...
peço desculpas por isso...
Agora, tenho mais uma duvida quanto à esse codigo
eu fui dar uma mexida e tudo mais, pq, antes eu num tava conseguindo fazer o download certinho, ele da o seguinte erro, quando eu clico no link que aparece ele manda para esse Link:
http://www.meudominio.com.br/download.php?arquivo=webroot/arquivos/imagem.jpg
quando, na verdade, ele deveria mandar para esse:
http://www.meudominio.com.br/download.php?arquivo=arquivos/imagem.jpg
Eu sei que ele esta acontecendo pq os arquivos estão dentro do ftp, dentro da pasta webroot>arquivos, na hora de listar blz, mas, na hora de fazer o link, num tem como ficar sem o webroot, pq, webroot é onde fica o site, não tem nenhuma pasta onde o site esta chamada webroot, para ele abrir e depois abrir a pasta arquivos...
Eu sei que isso da certo pq eu digitei da segunda forma no browser e ele pegou, o unico problema é com o link mesmo...
Se do jeito que eu falei agora parecer que quero "de bandeija", me desculpe...
E, quanto a meu post que eu disse que era desse jeito, eu vi apenas os links, não cheguei a clikar neles para ver se iria efetuar o download...
agradeço desde já.
peço desculpas por isso...
Agora, tenho mais uma duvida quanto à esse codigo
eu fui dar uma mexida e tudo mais, pq, antes eu num tava conseguindo fazer o download certinho, ele da o seguinte erro, quando eu clico no link que aparece ele manda para esse Link:
http://www.meudominio.com.br/download.php?arquivo=webroot/arquivos/imagem.jpg
quando, na verdade, ele deveria mandar para esse:
http://www.meudominio.com.br/download.php?arquivo=arquivos/imagem.jpg
Eu sei que ele esta acontecendo pq os arquivos estão dentro do ftp, dentro da pasta webroot>arquivos, na hora de listar blz, mas, na hora de fazer o link, num tem como ficar sem o webroot, pq, webroot é onde fica o site, não tem nenhuma pasta onde o site esta chamada webroot, para ele abrir e depois abrir a pasta arquivos...
Eu sei que isso da certo pq eu digitei da segunda forma no browser e ele pegou, o unico problema é com o link mesmo...
Se do jeito que eu falei agora parecer que quero "de bandeija", me desculpe...
E, quanto a meu post que eu disse que era desse jeito, eu vi apenas os links, não cheguei a clikar neles para ver se iria efetuar o download...
agradeço desde já.
26/03/2010 12:09pm
(~14 anos atrás)
(~14 anos atrás)
Rafael, use o caminho como uma variável apenas presente no lado do servidor e mostre apenas o nome do arquivo. Lembrando que dessa forma vc não pode ter mais de um diretório no destino, somente poderá lista de um arquivo.
Tente assim
-------------------
Tente assim
########## Arquivo listar.php $remote_dir='./webroot/arquivos/'; // Caminho para o diretório remoto $ftp_server = 'ftp.dominio.com'; // FTP do destino $ftp_user_name = 'nome_de_usuario'; $ftp_user_pass = 'senha_usuario'; // Conexão $conn_id = ftp_connect($ftp_server); // login $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); // listando arquivos do diretório $contents = ftp_nlist($conn_id, $remote_dir); // exibindo foreach($contents as $file) echo '<a href="/download.php?arquvio='. (str_replace($remote_dir,"",$file)) .'">' . (basename($file)) .'</a> // fecha a conexão ftp_close($conn_id);
-------------------
########## Arquivo download.php $local_file = 'php://stdout'; $remote_dir='./webroot/arquivos/'; // Caminho para o diretório remoto $server_file = isset($_GET['arquivo'])? $remote_dir . $_GET['arquivo']:NULL; if($server_file!=NULL) { $ftp_server = 'ftp.dominio.com'; // FTP do destino $ftp_user_name = 'nome_de_usuario'; $ftp_user_pass = 'senha_usuario'; // conectando $conn_id = ftp_connect($ftp_server); // login $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); // efetuando o download if (!ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) { echo "Ocorreu um erro\n"; } // fecha a conexão ftp_close($conn_id); exit;
26/03/2010 12:45pm
(~14 anos atrás)
(~14 anos atrás)
é exatamente isso, agora abre perfeitamente, muito obrigado Marcos, e foi mal pelo meu jeito de antes, de "bandeja" abraço
26/03/2010 2:13pm
(~14 anos atrás)
(~14 anos atrás)
Que isso Rafael, peço mil desculpas pelo modo de falar, não foi contigo.
Não quis dizer diretamente a você.. me perdoe por favor. Apenas utilizei essa FAQ pra poder explanar isso. Eu também quando comecei tinha muitas dúvidas, mas, foi como um desabafo. Porque tem muitas pessoas me adicionando no MSN pra ficar apenas pedindo ajuda e talz, nem sequer obrigado dão e talz.
De forma alguma quis atingir você. Mais uma vez peço desculpas e estou aqui para ajuda-lo no que for preciso.
Valeu!
Não quis dizer diretamente a você.. me perdoe por favor. Apenas utilizei essa FAQ pra poder explanar isso. Eu também quando comecei tinha muitas dúvidas, mas, foi como um desabafo. Porque tem muitas pessoas me adicionando no MSN pra ficar apenas pedindo ajuda e talz, nem sequer obrigado dão e talz.
De forma alguma quis atingir você. Mais uma vez peço desculpas e estou aqui para ajuda-lo no que for preciso.
Valeu!
28/07/2011 2:00pm
(~13 anos atrás)
(~13 anos atrás)
Desculpe "desenterrar" um tópico tão antigo. Mas estou tentando utilizar este mesmo código que o Marcos passou e não estou conseguindo. Até a parte de listagem dos arquivos não estou tendo problemas, consigo listar todos os arquivos da minha pasta que pretendo fazer o download,consigo tb criar o link para os arquivos, mas os arquivos simplesmente não são baixados. Ao clicar no arquivo ele vai para a pagina do download e aparentemente aponta para o arquivo certo, exemplo ao clicar no arquivo "cf1132399835.zip" ele vai para o endereço http://www.facilsistemas.com.br/downloads/download.php?arquivo=cf1132399835.zip porém o arquivo não é baixado. Já não sei o que fazer, alguem por favor pode me ajudar?