Ir para conteúdo

POWERED BY:

Arquivado

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

Dee

Enviar Arquivo Local Para FTP

Recommended Posts

A pergunte é simples. Como envio arquivos locais para uma pasta no FTP ?

Estou usando a função ftp_put(), mas sempre dá esse erro.

Warning: ftp_put(C:\Documents and Settings\web01.SALCAM.000\Desktop\tabela.xls) [function.ftp-put]: failed to 
open stream: No such file or directory in D:\web\LocalUser\dominio\www\ftp.php on line 13

Agora o código:

<?php

$ftp_server = "ftp.dominio.com.br";
$ftp_user = "user";
$ftp_pass = "senha";

$file = 'C:\Documents and Settings\web01.dominio.000\Desktop\tabela.xls';
$remote_file = 'novo/';

$conn_id = ftp_connect($ftp_server) or die("Conexão não pode ser Realizado para $ftp_server"); 
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);

if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY))
{
	echo "Upload Enviado com Sucesso do arquivo: $file\n";
} 
else 
{
	echo "Aconteceu um problema enquanto fazia o Upload do arquivo: $file\n";
}


?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu postei o erro no meu post anterior, a linha é óbvia. ¬¬

WARNING FTP_PUT(), Logo o erro é na função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

na variavel $remote_file você naum deve colocar a pasta pra onde ela vai, e sim o novo nome do arquivo, e se for o caso, adicionar o diretorio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza. Já testei com isso.

Porém o arquivo tem que ter no FTP primeiro. Já coloquei.

Eu até consegui fazer o Upload.

Mas vai com 0Kb. Vai com caracteres diferentes quando é um arquivo xls.

 

Sei lá!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Peguei seu code (ou do manual: http://www.php.net/m...on.ftp-put.php) e executei sem problemas. Enviei um arquivo que estava na mesma pasta do arquivo que faz o upload.

 

Coloque o caminho do arquivo relativo e não esqueça de definir o nome do arquivo que será gravado no $remote_file, pois só está definido o diretório.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Senhores, não se esqueçam da regra n⁰ 2:

 

 

02ª - Comportamento e bons modos

- Evite entrar em discussões que não lhe dizem respeito. - Evite palavras de baixo calão (palavrões). - Caso encontre alguma irregularidade e tenha disponibilidade, por favor, comunique ao moderador responsável pela área. - Evite discussões pessoais em público. Caso tenha algo a discutir com alguém, faça em particular. - Leia o tópico inteiro tal como todos os posts antes de responder, para evitar responder algo redundante ou fora de contexto.

 

Discutir no tópico não vai fazer o problema se resolver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém POSTA algo então que ajude.

Já li a documentação do ftp_put().

 

Quero saber como que envia um arquivo LOCAL, de um ENDEREÇO do meu COMPUTADOR para o FTP.

 

$file = ""; // O que eu coloco aqui ?
$remote_file = ""; // E aqui ?

ftp_put($conn_id, $remote_file, $file, FTP_BINARY); // Aqui eu coloco FTP_BINARY ou FTP_ASCII ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dee, já tentou alocar espaço para o seu arquivo ou usar fput em vez de put ?

 

$file = 'C:\Documents and Settings\web01.dominio.000\Desktop\tabela.xls';
$remote = 'novo/tabela.xls';

if ( ( $ftph = ftp_connect( 'ftp.dominio.com.br' ) ) !== false ){
if ( ftp_login( $ftph , 'user' , 'senha' ) ){
	if ( is_file( $file ) ){
		if ( is_readable( $file ) ){
			if ( ftp_alloc( $ftph , filesize( $file ) ) ){
				if ( ( $fh = fopen( $file , 'r' ) ) !== false ){
					if ( ftp_fput( $ftph , $remote , $fh , FTP_BINARY ) ){
						echo 'Arquivo enviado com sucesso.';
					} else echo 'Não foi possível enviar o arquivo.';

					fclose( $fh );
				} else echo 'Não foi possível abrir o arquivo de origem.';
			} else echo 'Não foi possível alocar espaço no servidor.';
		} else echo 'Não temos permissão de leitura no arquivo de origem';
	} else echo 'Arquivo de origem não existe.';
} else echo 'Não foi possível autenticar.';

ftp_close( $ftph );
} else echo 'Não foi possível conectar.';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei, mas não da forma que você mostrou.

Mas o ftp_fput() não é para um arquivo aberto ?

 

Como isso no meu caso ?

 

Depois vou fazer o que você fez.

Não faço agora porquê a KingHost está fora do ar. DE NOVO! ¬¬

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas o ftp_fput() não é para um arquivo aberto ?

 

Exatamente, perceba no fragmento que enviei q é feita a abertura do arquivo com fopen.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É verdade. Você abre ele.

E qual a diferença de eu alocar o espaço e não alocar ?

 

A minha dúvida era o endereço do arquivo no PC. Onde eu colocava. E porquê não estava funcionando, sendo que o endereço estava certo.

Porquê no exemplo que está no Manual, não tem endereço nem nada, só o nome do arquivo. Daí eu fiquei na dúvida de onde ele estava pegando o arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quero saber como que envia um arquivo LOCAL, de um ENDEREÇO do meu COMPUTADOR para o FTP.

 

$file = ""; // O que eu coloco aqui ?
$remote_file = ""; // E aqui ?

Cara, fiz assim e foi normalmente.

 

http://localhost/ftp.php

Na pasta onde está o ftp.php, criei um teste.txt

$file = "teste.txt";
$remote_file = "public_html/teste.txt";

Mantive inclusive o FTP_BINARY

Enviou normalmente. Faz esse teste simples pra ver

Compartilhar este post


Link para o post
Compartilhar em outros sites

E qual a diferença de eu alocar o espaço e não alocar ?

 

Alguns servidores exigem isso, outros não suportam alocação.

 

Como você estava tendo problemas, temos que testar as possibilidades, afinal, não tenho como saber qual é o caso do seu servidor de FTP.

 

Nota: Muitos servidores FTP não suportam esse comando. Esses servidores podem retorna um código de falha (FALSE) indicando que o comando não é suportado ou um código de sucesso (TRUE) para indicar que pre-alocação não é necessário e o cliente deve continuar como se a operação tivesse sucedido. Por isso, talvez seja melhor usar essa função apenas em servidores que requerem pre-alocação explicitamente.

 

O fragmento que eu enviei para você, funcionou ?

 

Caso não, exibiu alguma mensagem ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então. Para saber se funciona o fragmento que você mandou preciso que o meu FTP funcione.

Mas a KingHost está fora. E meu site está hospedado no servidor de lá.

 

Portanto, só quando voltar poderei testar.

 

E meu FTP não precisa de alocação de espaço e as nunca tive problemas com permissões também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E meu FTP não precisa de alocação de espaço e as nunca tive problemas com permissões também.

 

Caso o primeiro não funcione, tente esse (sem alocação de espaço) tentando entrar em modo passivo:

 

$file = 'C:\Documents and Settings\web01.dominio.000\Desktop\tabela.xls';
$remote = 'novo/tabela.xls';

if ( is_file( $file ) ){
if ( is_readable( $file ) ){
	if ( ( $fh = fopen( $file , 'r' ) ) !== false ){
		if ( ( $ftph = ftp_connect( 'ftp.dominio.com.br' ) ) !== false ){
			if ( ftp_login( $ftph , 'user' , 'senha' ) ){
				if ( ftp_pasv( $ftph , true ) ) echo 'Entrando em modo passivo.' , PHP_EOL;

				if ( ftp_fput( $ftph , $remote , $fh , FTP_BINARY ) ){
					echo 'Arquivo enviado com sucesso.';
				} else echo 'Não foi possível enviar o arquivo.';

			} else echo 'Não foi possível autenticar.';

			ftp_close( $ftph );
		} else echo 'Não foi possível conectar.';

		fclose( $fh );
	} else echo 'Não foi possível abrir o arquivo de origem.';
} else echo 'Não temos permissão de leitura no arquivo de origem';
} else echo 'Arquivo de origem não existe.';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Teste os dois.

Os dois deram, "Arquivo de Origem não encontrado".

 

E os endereços estão corretos. Testei. :s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dee, o problema está no caminho, ele não pode conter espaços.

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.