Jump to content


Photo

Erro No Upload


  • Faça o login para participar
30 replies to this topic

#1 dmw

dmw

    Turista

  • Usuários
  • 25 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 18/03/2010, 09:29

Bom dia pessoal !!!!

Eu to fazendo um sistema de upload onde eu anexo 4 arquivos e salvo no servidor. Salvar no servidor esta tudo OK mas o problema é que nao esta salvando na pasta que eu quero.
E ainda da esse erro: Warning: ftp_put() expects parameter 1 to be resource, boolean given.


Alguem pode me ajudar ???

Grato....

----- Código -----

<?php

include "sql.php";

// Dados do servidor
$servidor = 'www.ubccriative.com.br'; // Endereço
$usuario = '*****'; // Usuário
$senha = '*****'; // Senha

if(isset($_POST["btnok"]))
{

// Abre a conexão com o servidor FTP
$ftp = ftp_connect($servidor); // Retorno: true ou false

// Faz o login no servidor FTP
$login = ftp_login($ftp,$usuario,$senha); // Retorno: true ou false


$properts = array();


$files = isset($_FILES["imagem"]) ? $_FILES["imagem"] : FALSE;

$loops = count($files["name"]);
$cont = 1;

if(is_array($files))
$array = array_diff($_FILES["imagem"]["name"], array(''));

$exito_1 = move_uploaded_file($files["tmp_name"], $outputPath.$files["name"]);

$status = ftp_put($login,'/imagem/'.$files["name"],$exito_1,FTP_ASCII);

for($i=0; $i<$loops; $i++)
{
$exito = move_uploaded_file($files["tmp_name"][$i], $outputPath.$files["name"][$i]);

$id = $_POST["txtnum"];

$sql = "INSERT INTO tab_documento_teste(id_doc,id_cliente,documento) VALUES ('$id[$i]','$ultimo','/imagem/".$files["name"][$i]."')";

$resultado = mysql_query($sql) or die(mysql_error());

}

}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR...nsitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="" enctype="multipart/form-data"><br />

Anexo: <input type="file" name="imagem[]" /><br /> <br />
Anexo: <input type="file" name="imagem[]"/><br /><br />

<input type="submit" name="btnok" id="btnok" value="OK"/>
</form>
</body>
</html>

#2 Max William

Max William

    12 Horas

  • Usuários
  • 192 posts
  • Sexo:Masculino
  • Localidade:Maringá - Paraná

Posted 18/03/2010, 11:20

Nunca usei upload via FTP, porem, eu pude perceber uma coisa.
O endereço do seu servidor esta errado, você esta passando um HTTP para o ftp_connect, correto é passar o FTP (ftp.dominio.com.br)
Faça alteração e poste os resultados

PS: como teste adicional, neste momento
// Faz o login no servidor FTP
$login = ftp_login($ftp,$usuario,$senha); // Retorno: true ou false

insira um dump para ver se ele realmente esta retornando true
// Faz o login no servidor FTP
$login = ftp_login($ftp,$usuario,$senha); // Retorno: true ou false
var_dump($login);
exit;

Edição feita por: Max William, 18/03/2010, 11:22.

Se eu lhe ajudei ;) Clique para agradecer!

#3 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 18/03/2010, 11:20

se eu não me engano, o parâmetro 1 não é login, e sim o host do FTP...

http://php.net/manua...ion.ftp-put.php

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#4 dmw

dmw

    Turista

  • Usuários
  • 25 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 18/03/2010, 11:35

Eu fiz o que o falaram mas ainda nao esta salvando na pasta IMAGEM os arquivos, o mais importante é salvar os arquivos nessa pasta.

Agr ta com esse erro: Warning: ftp_put(): Filename cannot be empty

O codigo fico assim:

<?php
include "sql.php";

// Dados do servidor
$servidor = 'ftp.ubccriative.com.br'; // Endereço
$usuario = '*****'; // Usuário
$senha = '*****'; // Senha

if(isset($_POST["btnok"]))
{


// Abre a conexão com o servidor FTP
$ftp = ftp_connect($servidor); // Retorno: true ou false

// Faz o login no servidor FTP
$login = ftp_login($ftp,$usuario,$senha); // Retorno: true ou false


$properts = array();


$files = isset($_FILES["imagem"]) ? $_FILES["imagem"] : FALSE;

$loops = count($files["name"]);
$cont = 1;

if(is_array($files))
$array = array_diff($_FILES["imagem"]["name"], array(''));

$exito_1 = move_uploaded_file($files["tmp_name"], $outputPath.$files["name"]);

//$status = @ftp_put($login,'/imagem/'.$files["name"],$exito_1,FTP_ASCII);
$status = @ftp_put($ftp,'/imagem/'.$files["name"],$exito_1,FTP_ASCII);

for($i=0; $i<$loops; $i++)
{
$exito = move_uploaded_file($files["tmp_name"][$i], $outputPath.$files["name"][$i]);


$sql = "INSERT INTO tab_documento_teste(id_doc,id_cliente,documento) VALUES ('$id[$i]','$ultimo','".$files["name"][$i]."')";

$resultado = mysql_query($sql) or die(mysql_error());

}

}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR...nsitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="" enctype="multipart/form-data">
Anexo: <input type="file" name="imagem[]" /><br /> <br />
Anexo: <input type="file" name="imagem[]"/><br /><br />

<input type="submit" name="btnok" id="btnok" value="OK"/>
</form>
</body>
</html>

#5 Max William

Max William

    12 Horas

  • Usuários
  • 192 posts
  • Sexo:Masculino
  • Localidade:Maringá - Paraná

Posted 18/03/2010, 12:19

Abaixo um exemplo que fiz funcionando.
Faça alterações conscientes, antes de postar aqui que o codigo esta com problema.

Para o codigo funcionar a pasta tem que existir, caso contrario vai falhar.
Sim, existe função para criar diretorio, mas como não veio ao caso eu não a fiz.

<form name="teste" method="POST" action="" enctype="multipart/form-data">
 <input type='file' name='arquivo' />
 <br />
 <input type='submit' name='enviar' />
</form>

<?php
 if(isset($_POST['enviar']))
 {
  $ftp_server    = 'ftp.dominio.com.br'; // Dominio FTP
  $ftp_user_name = 'usuario'; // Login FTP
  $ftp_user_pass = 'senha'; // Senha FTP

  # Efetua Conexão com FTP
  $conecta = ftp_connect($ftp_server);
  # Autentica usuario
  $autentica = ftp_login($conecta, $ftp_user_name, $ftp_user_pass);

  # Variaveis
  $nome 	 = $_FILES['arquivo']['name'];
  $arquivo = $_FILES['arquivo'];

  # Diretorio onde sera enviado
  $diretorio = "/www/desenvolvimento/upload_ftp/";

  # Caminho completo, diretorio + nome do arquivo
  $destino = $diretorio."$nome";

  # Determino quem é o cara a ser enviado
  $file = $arquivo['tmp_name'];

  # Efetuo o upload
  $upload = ftp_put($conecta, $destino, $file, FTP_BINARY);

  # Checagem para resultado
  if(!$upload)
  {
   echo "FTP upload: falhou -> $destino";
  }
  else
  {
   echo "FTP upload: Enviado $file para $destino";
  }
 }
?>

Se eu lhe ajudei ;) Clique para agradecer!

#6 dmw

dmw

    Turista

  • Usuários
  • 25 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 18/03/2010, 13:08

Vlw Max William mas o problema é que sao 4 arquivos q tenho q anexar e nao um.

#7 Max William

Max William

    12 Horas

  • Usuários
  • 192 posts
  • Sexo:Masculino
  • Localidade:Maringá - Paraná

Posted 18/03/2010, 13:27

Sendo assim, script alterado para suas necessidades.
Aqui você pode ter, 1 campo de upload como 10 campos de upload, funcionara da mesma forma.

<form name="teste" method="POST" action="" enctype="multipart/form-data">
 <input type='file' name='arquivo[]' />
 <br />
 <input type='file' name='arquivo[]' />
 <br />
 <input type='file' name='arquivo[]' />
 <br />
 <input type='file' name='arquivo[]' />
 <br />
 <input type='submit' name='enviar' />
</form>

<?php
   #################################
   ## Autor: Max William Vitorino ##
   ## Criado: 18/03/2010 as 13:35 ##
   ## Favor manter os creditos    ##
   #################################

 if(isset($_POST['enviar']))
 {
  $ftp_server    = 'ftp.projecta3.com.br'; // Dominio FTP
  $ftp_user_name = '***'; // Login FTP
  $ftp_user_pass = '***'; // Senha FTP

  # Efetua Conexão com FTP
  $conecta = ftp_connect($ftp_server);
  # Autentica usuario
  $autentica = ftp_login($conecta, $ftp_user_name, $ftp_user_pass);

  # Variaveis
  $nome    = $_FILES['arquivo']['name'];
  $arquivo = $_FILES['arquivo'];
  
  # Determino quem é o cara a ser enviado
  $file = $arquivo['tmp_name'];

  # Diretorio onde sera enviado
  $diretorio = "/www/desenvolvimento/upload_ftp/";

  # Contagem
  $numero = count($nome);
  
  # Efetuo o upload
  for ($i=0; $i<$numero;$i++)
  {
   # Caminho completo, diretorio + nome do arquivo
   $destino = $diretorio."$nome[$i]";

   # Move o arquivo
   $upload = ftp_put($conecta, $destino, $file[$i], FTP_BINARY);
	
   # Checagem para resultado
   if($upload == false)
   {
   $erro[$i] = "O arquivo $nome[$i] não pode ser enviado";
   }

   if($upload == true)
   {
   $sucesso[$i] = "Arquivo $nome[$i] foi enviado com sucesso";
   }
  }
  
  $cont_erro = count($erro);
  $cont_sucs = count($sucesso);
  
  if($cont_erro >= 1)
  {
   for ($i=0; $i<$cont_erro;$i++)
   {
    echo $erro[$i]."<br />";
   }
  }
  
  if($cont_sucs >= 1)
  {
   for ($i=0; $i<$cont_sucs;$i++)
   {
    echo $sucesso[$i]."<br />";
   }
  }
 }
?>

Se eu lhe ajudei ;) Clique para agradecer!

#8 dmw

dmw

    Turista

  • Usuários
  • 25 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 18/03/2010, 13:39

Max William vlw pelo codigo mas aqui no meu da dando esse erro: Warning: ftp_put(): Filename cannot be empty in.

Vc sabe o pq q ocorre esse erro ????

#9 Max William

Max William

    12 Horas

  • Usuários
  • 192 posts
  • Sexo:Masculino
  • Localidade:Maringá - Paraná

Posted 18/03/2010, 13:44

Verifique seu formulario HTML,

Veja se no name dos input tipo file, o name esta arquivo[]
Se eu lhe ajudei ;) Clique para agradecer!

#10 dmw

dmw

    Turista

  • Usuários
  • 25 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 18/03/2010, 13:50

Os inputs estao assim:

<form name="teste" method="POST" action="" enctype="multipart/form-data">

<input type='file' name='arquivo[]' /><br><br />
<input type='file' name='arquivo[]' /><br /><br>
<input type='file' name='arquivo[]' /><br /><br>
<input type='file' name='arquivo[]' /><br /><br>

<input type='submit' name='enviar' value='Enviar'/>
</form>

O estranho q da esse erro mas ele envia para a pasta certa.

#11 Max William

Max William

    12 Horas

  • Usuários
  • 192 posts
  • Sexo:Masculino
  • Localidade:Maringá - Paraná

Posted 18/03/2010, 13:55

Você ta testando como localhost neh?

Ignora os Warning, eu fiz ele testando na web.. por isso não me apareceu isto.. warning são so avisos, nada que va influenciar no desempenho
Se eu lhe ajudei ;) Clique para agradecer!

#12 dmw

dmw

    Turista

  • Usuários
  • 25 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 18/03/2010, 13:56

Eu to testando no servidor

#13 Max William

Max William

    12 Horas

  • Usuários
  • 192 posts
  • Sexo:Masculino
  • Localidade:Maringá - Paraná

Posted 18/03/2010, 14:00

Estranho...

Eu fiz ele no meu servidor e não recebi nenhum warning..
Aliais, não sei porque teu host mostra warning..

Agora vc me pego..
Fica meio dificil fixar erro quando ele não aparece =/ (no caso, pra mim)
Se eu lhe ajudei ;) Clique para agradecer!

#14 dmw

dmw

    Turista

  • Usuários
  • 25 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 18/03/2010, 14:04

Cara eu tirei o ultimo IF e deu certo !!!!

Muito obrigado !!!!

Flw...
Abraço...

#15 Max William

Max William

    12 Horas

  • Usuários
  • 192 posts
  • Sexo:Masculino
  • Localidade:Maringá - Paraná

Posted 18/03/2010, 14:12

Por nada =P
é so clicar no + do post para agradecer e fica tudo certo ^^
Se eu lhe ajudei ;) Clique para agradecer!




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq