Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

edi-ss

[Resolvido] fazer download via FTP

Recommended Posts

bom pessoal , to com umas dificuldades ai ,

entao se der para me ajuda agradeço . ta ok

 

é o seguinte tenho um servidor FTP (GuildFTP) , e uma aplicação em php ,

o problemas é que nao consigo listar os arquivos para ser baixados ...

 

 

 

gostaria de poder baixar os arquivos pelas opções do checkbox. que tem a opção de colocar o local ... e tbm pelo salvar com... direto.

 

vo colocar o codigo e ir comentando ele , e no propio codigo coloco as duvidas ..ok

 

 

 

<?php
//DADOS PARA CONEXÃO 
$server = "127.0.0.1"; 
$usuario = "edivaldo"; 
$senha = "963852"; 

//CONECTA AO FTP
$conn = ftp_connect($server) 
	   or die ("ERRO AO CONECTAR AO SERVIDOR DE FTP ".$server);
		echo " Você esta Conectado :  $usuario  !!!!";
		
//TENTA EFETUAR O LOGIN COM USUÁRIO E SENHA DE ACESSO
if(@!ftp_login (
			  $conn
			, $usuario
			, $senha
			   ) ) {
	  echo "Não foi possível efetuar a conexão. Verifique o usuário e a senha de acesso.";
}//FECHA ELSE


//VERIFICA SE O FORM FOI ENVIADO PARA CONECTAR E FAZER O DOWNLOAD DO ARQUIVO
if($_POST) {

  //RECEBE OS DADOS DO FORM 
  $aArquivo = $_POST[arquivo]; 
  $pEndereco = $_POST[endereco]; 

  //FAZ O DOWNLOAD DO(S) ARQUIVO(S) 
  for($i=0; $i<sizeof($aArquivo); $i++) 
  { 

	//CAMINHO ONDE O ARQUIVO SERÁ SALVO 
	$local = $pEndereco.$aArquivo[$i]; 

	//FTP_PWD - DIRETÓRIO ATUAL DO SERVIDOR FTP 
	$server = ftp_pwd($conn).$aArquivo[$i]; 

	//FTP_GET() - DOWNLOAD DO ARQUIVO
	$status = ftp_get (
					 $conn 
				   , $local 
				   , $server 
				   , FTP_ASCII 
					 );

	//VERIFICA
	if($status) {
	  //MENSAGEM
	  echo "PARABÉNS! O arquivo $aArquivo[$i] foi baixado com Sucesso!<br>";
	} else {
	  //MENSAGEM
	  echo "ERRO! O arquivo $aArquivo[$i] NÃO FOI BAIXADO.<br>";
	}//FECHA ELSE
  }//FECHA FOR

  //FECHA A CONEXÃO COM O FTP
  ftp_close($conn);

  //TERMINA A EXECUÇÃO
  die;
}//FECHA IF ( POST ) ?>

<html>
<head>
<title> pagina para baixar os arquivos</title>
</head>

<body bgcolor="#FFFFFF">
<h1>Download de arquivo - FTP</h1>
<form name="frmFtp" method="post">
<table border="0" cellpading="0" cellspacing="0" width="50%">
<tr>
<td height="20" colspan="2" width="50%">Arquivos disponíveis na pasta :</td>
</tr>

<tr>
<td height="30" colspan="2" width="50%"><b>Marque com o X os arquivos desejados</b></td>
</tr>

<?
//EXIBE OS ARQUIVOS DA RAIZ USANDO A FUNÇÃO FTP_NLIST() 
$arr_arq = ftp_nlist($conn, "");	  //  bom a minha duvida ta aqui eu acho ne , eu nao consigo listar os arquivos 
												  //


for($i=0; $i<sizeof($arr_arq); $i++) { ?> 
<tr>
<td height="30" width="5%" bgcolor="#EBEBEB">
<input type="checkbox" name="arquivo[]" value="<? echo $arr_arq[$i]; ?>"></td>
<td height="30" width="45%" bgcolor="#EBEBEB"> <? echo $arr_arq[$i]; ?></td>
</tr>
<? 
}//FECHA FOR ?>
</table>

<br>
<table border="0" cellpading="0" cellspacing="0" width="60%">
<tr>
<td height="30" width="25%">Pasta onde o arquivo será salvo:</td>
<td height="30"width="35%">
<input name="endereco" type="text" size="35" value="C:\temp\"></td>
</tr>

<tr>
<td height="30" width="60%" colspan="2">
<input type="submit" name="btnEnviar" value="Enviar"></td>
</tr>
</table>
</form>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

nesse trecho

if(@!ftp_login (

remova o @, pois ele inibe exibição de erros

 

if(!ftp_login (

obs: remova apenas pra ver se está retornando algum erro, depois de consertar algum possível erro coloque o @ novamente.

 

 

preciso saber se o login é feito com sucesso

 

pois segundo descrição do seu problema, a falha pode estar relacionada ao modo de conexão com o FTP Server.

porém a conexão depende do provedor de internet e rede local, no caso, a conexão de internet do servidor web onde a aplicação PHP será executada.

 

primeiramente, faça o teste acima e retorne aqui o resultado, se o login foi feito com sucesso ou não.

Compartilhar este post


Link para o post
Compartilhar em outros sites

e ai cara beleza.

 

entao cara ..

 

pela conexão passiva

 

nao deu certo nao em ,

coloco true e false , mas nada de lista em.

 

ele verifica se o usuario ta logado e confirma que ta , mas nao lista o conteudo da pasta do servidor nao em ..

sera que pode ser o servidor que eu to usandop éee

 

nao sei se vcs conhece é esse aqui .. (GuildFTPd)

...

 

ok

 

grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

conheço o GuildFTPd

 

vamos do começo

 

 

1 - qual o sistema operacinal que está usando o servidor ?

2 - como você está fazendo o teste ?

rodando o php numa maquina local ou no servidor ?

 

3 - qual a versao do PHP ?

4 - mostre o script que você alterou

 

conheço o GuildFTPd

 

vamos do começo

 

 

1 - qual o sistema operacinal que está usando o servidor ?

2 - como você está fazendo o teste ?

rodando o php numa maquina local ou no servidor ?

 

3 - qual a versao do PHP ?

4 - mostre o script que você alterou

 

5 - conectando com um cliente ftp a listagem é feita normalmente ? como está a configuração do cliente ftp ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 – o sistema operacional é no XP .. 1° quero fazer funcionar no xp ..

e depois vou para o Linux

 

2- os teste ...to fazendo os teste em uma maquina local ..

estalei o WAMP ... e o GuildFTPd..

estão rodando OK. Os dois ..

 

3 – PHP 5..

 

 

4 – // da uma olhada ai no meu código ate agora ...comentei os trechos .. ele não da erros , funciona normal , mas so não lista o que tenho na pasta

 

<?php
//DADOS PARA CONEXÃO 
$server = "127.0.0.1"; 
$usuario = "edivaldo"; 
$senha = "963852"; 

//CONECTA AO FTP
$conn = ftp_connect($server) 
	   or die ("ERRO AO CONECTAR AO SERVIDOR DE FTP ".$server);
		echo " Você esta Conectado :  $usuario  !!!!";
		
//TENTA EFETUAR O LOGIN COM USUÁRIO E SENHA DE ACESSO
if(@!ftp_login (
			  $conn
			, $usuario
			, $senha
			   ) ) {
	  echo "Não foi possível efetuar a conexão. Verifique o usuário e a senha de acesso.";
}//FECHA ELSE


// cliente passivo ou nao...
ftp_pasv($conn, false);

//VERIFICA SE O FORM FOI ENVIADO PARA CONECTAR E FAZER O DOWNLOAD DO ARQUIVO
if($_POST) {

  //RECEBE OS DADOS DO FORM 
  $aArquivo = $_POST[arquivo]; 
  $pEndereco = $_POST[endereco]; 

  //FAZ O DOWNLOAD DO(S) ARQUIVO(S) 
  for($i=0; $i<sizeof($aArquivo); $i++) 
  { 

	//CAMINHO ONDE O ARQUIVO SERÁ SALVO 
	$local = $pEndereco.$aArquivo[$i]; 

	//FTP_PWD - DIRETÓRIO ATUAL DO SERVIDOR FTP 
	$server = ftp_pwd($conn).$aArquivo[$i]; 

	//FTP_GET() - DOWNLOAD DO ARQUIVO
	$status = ftp_get (
					 $conn 
				   , $local 
				   , $server 
				   , FTP_ASCII 
					 );

	//VERIFICA
	if($status) {
	  //MENSAGEM
	  echo "PARABÉNS! O arquivo $aArquivo[$i] foi baixado com Sucesso!<br>";
	} else {
	  //MENSAGEM
	  echo "ERRO! O arquivo $aArquivo[$i] NÃO FOI BAIXADO.<br>";
	}//FECHA ELSE
  }//FECHA FOR

  //FECHA A CONEXÃO COM O FTP
  ftp_close($conn);

  //TERMINA A EXECUÇÃO
  die;
}//FECHA IF ( POST ) ?>

<html>
<head>
<title> pagina para baixar os arquivos</title>
</head>

<body bgcolor="#FFFFFF">
<h1>Download de arquivo - FTP</h1>
<form name="frmFtp" method="post">
<table border="0" cellpading="0" cellspacing="0" width="50%">
<tr>
<td height="20" colspan="2" width="50%">Arquivos disponíveis na pasta :</td>
</tr>

<tr>
<td height="30" colspan="2" width="50%"><b>Marque com o X os arquivos desejados</b></td>
</tr>

<?
//EXIBE OS ARQUIVOS DA RAIZ USANDO A FUNÇÃO FTP_NLIST() 
$arr_arq = ftp_nlist($conn, ""); 

for($i=0; $i<sizeof($arr_arq); $i++) { ?> 
<tr>
<td height="30" width="5%" bgcolor="#EBEBEB">
<input type="checkbox" name="arquivo[]" value="<? echo $arr_arq[$i]; ?>"></td>
<td height="30" width="45%" bgcolor="#EBEBEB"> <? echo $arr_arq[$i]; ?></td>
</tr>
<? 
}//FECHA FOR ?>
</table>

<br>
<table border="0" cellpading="0" cellspacing="0" width="60%">
<tr>
<td height="30" width="25%">Pasta onde o arquivo será salvo:</td>
<td height="30"width="35%">
<input name="endereco" type="text" size="35" value="C:\temp\"></td>
</tr>

<tr>
<td height="30" width="60%" colspan="2">
<input type="submit" name="btnEnviar" value="Enviar"></td>
</tr>
</table>
</form>
</body>
</html>
//*********************************************************************

 

5- bom já a configuração do cliente .. acho q esta certo sim ,

por que eu tenho esta outra aplicação no php. Que é exibir o conteúdo da pasta...

e da certinho sim...

 

 

<?php

//DADOS PARA CONEXÃO 
$server = "127.0.0.1"; 
$usuario = "edivaldo"; 
$senha = "963852"; 
$fisico = "c:/ftproot";

//CONECTA AO FTP
$conn = ftp_connect($server) 
		  or die ("ERRO AO CONECTAR AO SERVIDOR DE FTP ".$server);

//TENTA EFETUAR O LOGIN COM USUÁRIO E SENHA DE ACESSO
if(@ftp_login($conn, $usuario, $senha) ) {
   echo "Conectado ao servidor de FTP com o usuário ".$usuario;
}//FECHA IF
else {
   echo "Não foi possível efetuar a conexão. Verifique o usuário e a senha de acesso.";
}
//EXIBE OS ARQUIVOS DO SERVIDOR DE FTP 
$arr_arq = ftp_nlist($conn, ""); 

//EXIBE OS ARQUIVOS ENCONTRADOS
echo "<br><br>";
echo '<table border="1" cellpading="0" cellspacing="0" width="35%">';
//ARQUIVOS DO ARRAY
foreach($arr_arq as $chave => $valor) {
echo "<tr>"; 
echo "<td>".$valor."</td>";
echo "</tr>"; 
}//FECHA FOR 
echo "</table>";
?>  
//********************************

estranho ne ... consigo exibir esta aqui , mas na outra la , não consigo exibir para poderem fazer o Download , do arquivos ..

 

 

 

bom cara , ta ai ,

agradeço se poder me ajuda ..

 

1 – o sistema operacional é no XP .. 1° quero fazer funcionar no xp ..

e depois vou para o Linux

 

2- os teste ...to fazendo os teste em uma maquina local ..

estalei o WAMP ... e o GuildFTPd..

estão rodando OK. Os dois ..

 

3 – PHP 5..

 

 

4 – // da uma olhada ai no meu código ate agora ...comentei os trechos .. ele não da erros , funciona normal , mas so não lista o que tenho na pasta

 

<?php
//DADOS PARA CONEXÃO 
$server = "127.0.0.1"; 
$usuario = "edivaldo"; 
$senha = "963852"; 

//CONECTA AO FTP
$conn = ftp_connect($server) 
	   or die ("ERRO AO CONECTAR AO SERVIDOR DE FTP ".$server);
		echo " Você esta Conectado :  $usuario  !!!!";
		
//TENTA EFETUAR O LOGIN COM USUÁRIO E SENHA DE ACESSO
if(@!ftp_login (
			  $conn
			, $usuario
			, $senha
			   ) ) {
	  echo "Não foi possível efetuar a conexão. Verifique o usuário e a senha de acesso.";
}//FECHA ELSE


// cliente passivo ou nao...
ftp_pasv($conn, false);

//VERIFICA SE O FORM FOI ENVIADO PARA CONECTAR E FAZER O DOWNLOAD DO ARQUIVO
if($_POST) {

  //RECEBE OS DADOS DO FORM 
  $aArquivo = $_POST[arquivo]; 
  $pEndereco = $_POST[endereco]; 

  //FAZ O DOWNLOAD DO(S) ARQUIVO(S) 
  for($i=0; $i<sizeof($aArquivo); $i++) 
  { 

	//CAMINHO ONDE O ARQUIVO SERÁ SALVO 
	$local = $pEndereco.$aArquivo[$i]; 

	//FTP_PWD - DIRETÓRIO ATUAL DO SERVIDOR FTP 
	$server = ftp_pwd($conn).$aArquivo[$i]; 

	//FTP_GET() - DOWNLOAD DO ARQUIVO
	$status = ftp_get (
					 $conn 
				   , $local 
				   , $server 
				   , FTP_ASCII 
					 );

	//VERIFICA
	if($status) {
	  //MENSAGEM
	  echo "PARABÉNS! O arquivo $aArquivo[$i] foi baixado com Sucesso!<br>";
	} else {
	  //MENSAGEM
	  echo "ERRO! O arquivo $aArquivo[$i] NÃO FOI BAIXADO.<br>";
	}//FECHA ELSE
  }//FECHA FOR

  //FECHA A CONEXÃO COM O FTP
  ftp_close($conn);

  //TERMINA A EXECUÇÃO
  die;
}//FECHA IF ( POST ) ?>

<html>
<head>
<title> pagina para baixar os arquivos</title>
</head>

<body bgcolor="#FFFFFF">
<h1>Download de arquivo - FTP</h1>
<form name="frmFtp" method="post">
<table border="0" cellpading="0" cellspacing="0" width="50%">
<tr>
<td height="20" colspan="2" width="50%">Arquivos disponíveis na pasta :</td>
</tr>

<tr>
<td height="30" colspan="2" width="50%"><b>Marque com o X os arquivos desejados</b></td>
</tr>

<?
//EXIBE OS ARQUIVOS DA RAIZ USANDO A FUNÇÃO FTP_NLIST() 
$arr_arq = ftp_nlist($conn, ""); 

for($i=0; $i<sizeof($arr_arq); $i++) { ?> 
<tr>
<td height="30" width="5%" bgcolor="#EBEBEB">
<input type="checkbox" name="arquivo[]" value="<? echo $arr_arq[$i]; ?>"></td>
<td height="30" width="45%" bgcolor="#EBEBEB"> <? echo $arr_arq[$i]; ?></td>
</tr>
<? 
}//FECHA FOR ?>
</table>

<br>
<table border="0" cellpading="0" cellspacing="0" width="60%">
<tr>
<td height="30" width="25%">Pasta onde o arquivo será salvo:</td>
<td height="30"width="35%">
<input name="endereco" type="text" size="35" value="C:\temp\"></td>
</tr>

<tr>
<td height="30" width="60%" colspan="2">
<input type="submit" name="btnEnviar" value="Enviar"></td>
</tr>
</table>
</form>
</body>
</html>
//*********************************************************************

 

5- bom já a configuração do cliente .. acho q esta certo sim ,

por que eu tenho esta outra aplicação no php. Que é exibir o conteúdo da pasta...

e da certinho sim...

 

 

<?php

//DADOS PARA CONEXÃO 
$server = "127.0.0.1"; 
$usuario = "edivaldo"; 
$senha = "963852"; 
$fisico = "c:/ftproot";

//CONECTA AO FTP
$conn = ftp_connect($server) 
		  or die ("ERRO AO CONECTAR AO SERVIDOR DE FTP ".$server);

//TENTA EFETUAR O LOGIN COM USUÁRIO E SENHA DE ACESSO
if(@ftp_login($conn, $usuario, $senha) ) {
   echo "Conectado ao servidor de FTP com o usuário ".$usuario;
}//FECHA IF
else {
   echo "Não foi possível efetuar a conexão. Verifique o usuário e a senha de acesso.";
}
//EXIBE OS ARQUIVOS DO SERVIDOR DE FTP 
$arr_arq = ftp_nlist($conn, ""); 

//EXIBE OS ARQUIVOS ENCONTRADOS
echo "<br><br>";
echo '<table border="1" cellpading="0" cellspacing="0" width="35%">';
//ARQUIVOS DO ARRAY
foreach($arr_arq as $chave => $valor) {
echo "<tr>"; 
echo "<td>".$valor."</td>";
echo "</tr>"; 
}//FECHA FOR 
echo "</table>";
?>  
//********************************

estranho ne ... consigo exibir esta aqui , mas na outra la , não consigo exibir para poderem fazer o Download , do arquivos ..

 

haaa se tiver algum tutorial ai pra me indicar , do php , ou de configurar o servidor ftp. agradeço..

 

bom cara , ta ai ,

agradeço se poder me ajuda ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta entao vou do começo ta ok..

 

ate com o exemplo que você passo ai , ta dando erros .

 

o codigo como fiz ..

<?php
//DADOS PARA CONEXÃO 
$ftp_server = "127.0.0.1"; 
$usuario = "edivaldo"; 
$senha = "963852"; 

				// define some variables
		$folder_path = "C:\ftproot"; 
		$local_file = "C:\ftproot";
		$server_file = "C:\ftproot";
		
	  
		#$destination_file = "FILEPATH"; 
		
		// set up basic connection
		$conn_id = ftp_connect($ftp_server);
		
		// login with username and password
		$login_result = ftp_login($conn_id, $usuario, $senha);
		
		//FTP_PWD - DIRETÓRIO ATUAL DO SERVIDOR FTP 
		$ftp_server = ftp_pwd($conn_id).$aArquivo[$i]; 

		
		// try to download $server_file and save to $local_file
		if (ftp_get($conn_id, 
		$local_file, 
		$server_file, 
		FTP_BINARY)) {
			echo "Successfully written to $local_file\n";
		} else {
			echo "erro \n";
		}
		
		// close the connection
		ftp_close($conn_id);
?>

oo erro que da :

 

Warning: ftp_get(C:\ftproot) [function.ftp-get]: failed to open stream: Permission denied in C:\wamp\www\testeftp\download.php on line 29

 

Warning: ftp_get() [function.ftp-get]: Error opening C:\ftproot in C:\wamp\www\testeftp\download.php on line 29

erro

 

 

********************

 

ja mudei para : FTP_ASCII

 

e nada ...

 

sera que é o servidor ftp , que ta bloqueando ée..

 

grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom ...

 

segui o exemplo que me passo , mas ta dando erro

 

oo meu codigo

ai

<?php
//DADOS PARA CONEXÃO 
$ftp_server = "127.0.0.1"; 
$usuario = "edivaldo"; 
$senha = "963852"; 

				// define some variables
		$folder_path = "C:\ftproot"; 
		$local_file = "C:\ftproot";
		$server_file = "C:\ftproot";
		
	  
		#$destination_file = "FILEPATH"; 
		
		// set up basic connection
		$conn_id = ftp_connect($ftp_server);
		
		// login with username and password
		$login_result = ftp_login($conn_id, $usuario, $senha);
		
		//FTP_PWD - DIRETÓRIO ATUAL DO SERVIDOR FTP 
		$ftp_server = ftp_pwd($conn_id).$aArquivo[$i]; 

		
		// try to download $server_file and save to $local_file
		if (ftp_get($conn_id, 
		$local_file, 
		$server_file, 
		FTP_BINARY)) {
			echo "Successfully written to $local_file\n";
		} else {
			echo "erro \n";
		}
		
		// close the connection
		ftp_close($conn_id);
?>

 

 

oo o erro q da:

Warning: ftp_get(C:\ftproot) [function.ftp-get]: failed to open stream: Permission denied in C:\wamp\www\testeftp\download.php on line 29

 

Warning: ftp_get() [function.ftp-get]: Error opening C:\ftproot in C:\wamp\www\testeftp\download.php on line 29

erro

 

sera que é o servidor ftp , q ta bloqueando..

 

grato pela ajuda

 

e ja troquei para :

 

FTP_ASCII

 

mas a inda da erro ..

 

se poder me ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

a mensagem de erro já diz tudo

 

você não está informando qual arquivo deve ser baixado

 

a mensagem de permissão negada ocorre porque a função ftp_get tentou fazer download de uma pasta.

 

consulte:

 

http://php.net/ftp_get

 

 

 

além do mais, isso fará o download de servidor pra servidor. não abrirá uma caixa de download para o lado cliente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao entendi algumas linhas

seposivel me ajude a entender ai ..

 

vo colocar o codigo e comentar , ai vcs ve se ta errado ..ok

 

<?php

// define some variables
$local_file = 'local.zip';	   // não sei oque colocar aqui . é o caminha do servidor :
										//ex:  $local_file = "C:\ftproot";
 
$server_file = 'server.zip';  //tenho que especificar o caminho da pasta que contem os arquivos 
										//para ser	  baixador .ex:  $server_file = "C:\ftproot";


// set up basic connection
$conn_id = ftp_connect($ftp_server);  // numero ip do servidor .ex: 127.0.0.1

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);  //login e senha p/ acesso ao ftp


// try to download $server_file and save to $local_file	//aqui conecta ao ftp para paixa o arquivo 
if (ftp_get($conn_id,   // servidor ftp , 127.0.0.1
 $local_file,		// local onde ta o arquivo 
$server_file,	   // local do servidor 
FTP_BINARY))	 // forma de download
{
	echo "Successfully written to $local_file\n";  // se tudo ok..  baixado com sucesso
} else {
	echo "There was a problem\n"; // se nao ta ok.. da erro
}

// close the connection
ftp_close($conn_id);	 // fim conexao com servidor ftp

?>

 

 

 

bom pessoal se poderem me ajuda ta ai o codigo ...ok

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Pessoal,
Executei o script, não deu erro.

 

Deu as mensagens abaixo,

 

Você esta Conectado : h5comb !!!!PARABÉNS! O arquivo enviaraniversario.asp.100 foi baixado com Sucesso!
PARABÉNS! O arquivo enviaraniversario.asp.101 foi baixado com Sucesso!
PARABÉNS! O arquivo enviaraniversario.asp.102 foi baixado com Sucesso!
PARABÉNS! O arquivo enviaraniversario.asp.99 foi baixado com Sucesso!

 

Porem nada foi baixado.

Alguem pode me ajudar?

Grato.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.