enviar o ficheiro e gravá-lo com o nome original [duplicado]

Esta pergunta já tem uma resposta:
Preciso de um formulário para enviar ficheiros. Quero gravar o ficheiro carregado com o nome original.

tenho este código PHP:

<form action="" enctype="multipart/form-data" method="POST">
  <input type="file" name="file" /> <br />
  <input type="submit" value="Upload" />
</form>

<?php
  if ( ($_SERVER['REQUEST_METHOD'] == 'POST') ) {
    $fieldname = $_REQUEST['file'];
    $tmpfile = $_FILES[$fieldname]['tmp_name'];

    $info = pathinfo($tmpfile);
    $filename = 'newfile.' . $info['extension'];

    $uploaddir = 'uploads/';
    $uploadfile = $uploaddir . $filename;

    if(move_uploaded_file($tmpfile, $uploadfile)) {
      echo $uploadfile;
    }

  }
?>

mas depois de enviar o ficheiro do utilizador, tenho o ficheiro tmp_name no servidor.

O Que Eu necessidade: ficheiro de envio do Utilizador photo123.jpg - Quero photo123.jpg no servidor. Upload do utilizador firefox.exe - Eu quero firefox.exe

Author: Albzi, 2014-06-10

2 answers

Tenta com $_FILES['file']['name']

if ( ($_SERVER['REQUEST_METHOD'] == 'POST') ) {
    $tmpfile = $_FILES['file']['tmp_name'];
    $filename = $_FILES['file']['name'];
    $uploaddir = 'uploads/';
    $uploadfile = $uploaddir . $filename;
    if(move_uploaded_file($tmpfile, $uploadfile)) {
      echo $uploadfile;
    }
  }
 1
Author: Rakesh Sharma, 2014-06-10 11:25:38

Tenta isto:

$fieldname = $_FILES['file']['name'];

Em vez de $fieldname = $_REQUEST['file'];

 1
Author: AkshayP, 2014-06-10 11:43:12