• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

20_LESI

[RESOLVIDO] Upload de ficheiros

5 mensagens neste tópico

Boas!

Estou a iniciar-me no php, e tenho seguido os tutoriais da w3schools. Encalhei no upload de ficheiros... Eis o código:

teste.html

<html>
<body>
   
<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submeter" />
</form>

</body>
</html>

upload.php

<html>
<body>

<?php
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
?>

</body>
</html>

Segundo o tutorial, ele deveria fazer o upload para o servidor. No meu caso, para a pasta do MAMP:

By using the global PHP $_FILES array you can upload files from a client computer to the remote server.

No entanto não é efectuado nenhum upload... Alguém me sabe dizer o que pode estar a acontecer?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens de mover o ficheiro da localização temporária para a localização onde pretendes que ele fique. Não tens definido isso no teu código, apenas mostras as informações!

No teu caso, tens de usar o:

move_uploaded_file($_FILES['file']['tmp_name'], $target)

em que $target é o caminho absoluto do teu destino.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas com este código não era suposto o ficheiro ficar temporariamente numa pasta do MAMP?

No teu caso, tens de usar o:

move_uploaded_file($_FILES['file']['tmp_name'], $target)

em que $target é o caminho absoluto do teu destino.

Também já testei dessa forma. Utilizei o seguinte código:

<html>
<body>

<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>

</body>
</html>

Obtenho o seguinte erro:

Warning: move_uploaded_file(upload/alert.red.gif) [function.move-uploaded-file]: failed to open stream: No such file or directory in /Users/binte/Sites/upload_file3.php on line 28

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/Applications/MAMP/tmp/php/phpylx1Cm' to 'upload/alert.red.gif' in /Users/binte/Sites/upload_file3.php on line 28

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como já disse, tens de indicar caminhos absolutos. Tu estas a dar um caminho relativo, o de "upload"...

Se o teu server estiver em Windows tens de indicar algo do género:

"file:///C:/...Caminho até.../uploads"

Se for em linux algo do género também com caminhos absolutos e não esquecer de dar permissões de escrita à pasta.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Era isso! E não só... Tinha de ter a pasta criada!

:wallbash:

Muito obrigado!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora