Как переименовать загруженный файл перед его сохранением? - PullRequest
1 голос
/ 10 августа 2011

Я использую этот фрагмент ниже, чтобы получить имя файла и расширение, которое работает, но как я могу переименовать файл так, чтобы имя файла было равно bake23 + расширение файла.

  $variable = 'baKe23';


  $filename = $_FILES['filename']['name'];
  $ext = $_FILES["filename"]["type"];

Переименовать, если имя файла уже существует:

       $filename = $_FILES['filename']['name']; 
  $extension = substr($filename, strpos($filename,'.'), 
  strlen($filename)-1);

         $sql="SELECT filename FROM documents WHERE person_id= '$pid'";  

     $result=mysql_query($sql);

    $query = mysql_query($sql) or die ("Error: ".mysql_error());

    if ($result == "")
    {
    echo "";
     }
    echo "";


   $rows = mysql_num_rows($result);

   if($rows == 0)
   {
  print("");

   }
   elseif($rows > 0)
   {
  while($row = mysql_fetch_array($query))
   {

  $existing = $row['filename'];

  print("");
   }

    }

    if ( $filename === $existing ) {
$filename = $rnd_id.strrchr($_FILES['filename']['name'], ".");

   } else {
   $filename = $_FILES['filename']['name'];;
    }

Ответы [ 2 ]

4 голосов
/ 10 августа 2011

Получить расширение из представленного имени файла и добавить его в вашу переменную:

$filename = basename($filename);
$filename = $variable . (string) strrchr($filename, '.');

Редактировать: Для вашего отредактированного вопроса буквально :

$filename =  $variable . '.' . $ext;

Однако, учитывая, что я буду загружать изображение с именем banana-smiley.gif, произойдет следующее:

$filename = 'baKe23.image/gif';

Это не то, что вы хотите, я предполагаю. Вы даже не должны полагаться на $_FILES[*]["type"]. Вам нужно проверить каждый загруженный файл (определить тип, проверить тип, запустить проверку на вирусы для загруженного файла).

Вопрос, связанный с этим: Безопасная загрузка файла и проверка его и Важно ли проверить, что загруженный файл является действительным файлом изображения? .

3 голосов
/ 10 августа 2011
$variable = 'baKe23';
$filename = $_FILES['filename']['name'];
$filename = $variable.strrchr($_FILES['filename']['name'], ".");

или

$variable = 'baKe23';
$filename = $_FILES['filename']['name'];
$filename = $variable.".".pathinfo($filename, PATHINFO_EXTENSION);
...