Jump to content

[RESOLVIDO] Upload de ficheiros


20_LESI
 Share

Recommended Posts

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?

Link to comment
Share on other 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.

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Link to comment
Share on other 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

Link to comment
Share on other 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.

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.