[Tópico FECHADO]Problema em mudar o nome de um file por ftp [php]

Stawl

Membro
Boas, gostaria que me ajudassem aqui. O site que estou a fazer tem uma opção para fazer o upload de um foto vinda da maquina do utilizador, o problema é que eu gostava que a foto ficasse com o nome do ID do user de forma a que quando ele fizesse log in, a sua imagem fosse lida no topo do site(dentro de um tabela onde o php iria ler a imagem de acordo com o ID do username).

Código:

if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " já existe. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Ficheiro guardado com sucesso.";
$_SESSION['foto'] = 1;
?>
<meta HTTP-EQUIV="REFRESH" content="0; url=foto.php">
<?
}
É redireccionado para:
<?
if ($_SESSION['foto'] = 1) {
$conn = ftp_connect("####") or die("Could not connect");
ftp_login($conn,"###","###");

ftp_rename($conn, $_FILES['file']['name'] . $_FILES['file']['type'], $_SESSION['id'] . $_FILES['file']['type']);
#pensei que fizesse: nome.png para 5.png.

ftp_close($conn);
?>
<meta HTTP-EQUIV="REFRESH" content="0; url=opcoes.php">
<?
}
?>
Que fique claro que o ficheiro fica hostado, apenas não concigo alterar-lhe o nome dentro do host. Penso que não deve ser esse o código para alterar o nome do ficheiro. Já tentei fazer "print $_FILES['file']['name'];" mas não apareçe nada.

Cumprimentos,

Stawl
 
Última edição:
move_uploaded_file( $_FILES["file"]["tmp_name"] , "upload/" . $_SESSION['id'] . $_FILES['file']['type']);

Só assim já transfere o ficheiro para o servidor com o novo nome.
 
Novo problema, a linha de código ficou da seguinte forma:

move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_SESSION['id'] . "." . $_FILES["type"]);

Infelizmente só me guarda a imagem como 2. sem acrescentar a extensao...
Tentei por jpg depois do ponto e eleminar o $_FILES etc e confirmei que guardou a imagem como queria (ate apareceu o quadradinho da imagem no filezilla), puz tambem $_SESSION['id'] e guardou como 2.2 mas com o type nao aparece a extensao e guarda como 2.
 
Última edição:
Podes obter a extensao de varias maneiras:

PHP:
  $path_info = pathinfo($file);
  $extensao = $path_info['extension'];

ou

PHP:
$extensao = end(explode(".", $file))
Esta ultima não funciona para ficheiros tipo nome.tgz.gz, mas para o que precisas é suficiente
 
Podes obter a extensao de varias maneiras:

PHP:
  $path_info = pathinfo($file);
  $extensao = $path_info['extension'];
ou

PHP:
$extensao = end(explode(".", $file))
Esta ultima não funciona para ficheiros tipo nome.tgz.gz, mas para o que precisas é suficiente

Bem, já estou farto de andar as voltas com o código que me disses-te, mas ainda não descubri como o utilizar. Diz-me, esse $file é para meter a localização do file? É que não faz muito sentido porque estou a ir buscar a estensao do ficheiro onde? Pensei entao que talvez fosse ao local temporario onde ele fica ate ser gravado e puz o seguinte código:

else
{
$path_info = pathinfo($_FILES["file"]["tmp_name"]);
$extensao = $path_info['extension'];
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_SESSION['id'] . "." . $extensao);
echo "Ficheiro guardado com sucesso.";
}
 
Bem, já estou farto de andar as voltas com o código que me disses-te, mas ainda não descubri como o utilizar. Diz-me, esse $file é para meter a localização do file? É que não faz muito sentido porque estou a ir buscar a estensao do ficheiro onde? Pensei entao que talvez fosse ao local temporario onde ele fica ate ser gravado e puz o seguinte código:

else
{
$path_info = pathinfo($_FILES["file"]["tmp_name"]);
$extensao = $path_info['extension'];
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_SESSION['id'] . "." . $extensao);
echo "Ficheiro guardado com sucesso.";
}

Minha culpa.
Tens de ir buscar o nome original do ficheiro $_FILES["file"]["name"] e não o tmp_name. O teu codigo deverá ser:

PHP:
{
$path_info = pathinfo($_FILES["file"]["name"]);
$extensao = $path_info['extension'];
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_SESSION['id'] . "." . $extensao);
echo "Ficheiro guardado com sucesso.";
}
 
Back
Topo