PHP загрузить файлы и дать собственное имя - PullRequest
3 голосов
/ 23 августа 2011

Я использую эту функцию для загрузки своих файлов:

if ((($_FILES["Artwork"]["type"] == "image/gif")
|| ($_FILES["Artwork"]["type"] == "image/jpeg")
|| ($_FILES["Artwork"]["type"] == "image/jpg")
|| ($_FILES["Artwork"]["type"] == "image/pjpeg"))
&& ($_FILES["Artwork"]["size"] < 20000000))
  {
  if ($_FILES["Artwork"]["error"] > 0)
    {
    //echo "Return Code: " . $_FILES["Artwork"]["error"] . "<br />";
    }else{
      $imageName = $_FILES['Artwork']['name'];
      move_uploaded_file($_FILES["Artwork"]["tmp_name"],
      $path_image . $imageName);
      }
    }else{
    //echo "invalid file";
    }

Как мне изменить $imageName = $_FILES['Artwork']['name']; на свое имя, но с расширением имени файла, например: myCustomName.jpg?

Спасибо!

Ответы [ 3 ]

7 голосов
/ 23 августа 2011

Единственная строка, которую вам нужно изменить в вашем коде:

$imageName = 'CustomName.' . pathinfo($_FILES['Artwork']['name'],PATHINFO_EXTENSION);

Где 'CustomName.' это новое имя, которое вы хотите для изображения. pathinfo если функция PHP обрабатывает операции с путями и именами файлов.

Весь ваш код будет:

if ((($_FILES["Artwork"]["type"] == "image/gif")
|| ($_FILES["Artwork"]["type"] == "image/jpeg")
|| ($_FILES["Artwork"]["type"] == "image/jpg")
|| ($_FILES["Artwork"]["type"] == "image/pjpeg"))
&& ($_FILES["Artwork"]["size"] < 20000000))
  {
  if ($_FILES["Artwork"]["error"] > 0)
    {
    //echo "Return Code: " . $_FILES["Artwork"]["error"] . "<br />";
    }else{
      $imageName = 'CustomName.' . pathinfo($_FILES['Artwork']['name'],PATHINFO_EXTENSION);
      move_uploaded_file($_FILES["Artwork"]["tmp_name"],
      $path_image . $imageName);
      }
    }else{
    //echo "invalid file";
    }
1 голос
/ 23 августа 2011
$ext = last(explode('.', $_FILES['Artwork']['name']));
$custom_name = 'something';
$imageName = $custom_name.'.'.$ext;
0 голосов
/ 23 августа 2011

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

$parts = explode('.', $_FILES['Artwork']['name']);
$newname = "myCustomName" . (size($parts) > 1 ? '.' . last($parts) : '')
...