Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Закрытая темаСоздание новой темыСоздание опроса

> Переименование файла с сохранением расширения
P i L o T  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 54
Пользователь №: 6066
На форуме: 16 лет, 9 месяцев, 5 дней
Карма:




Всем вечер добрый. Я относительно недавно стал делать менеджер файлов для своего сайтика. Написал скрипт отправки файла на сервер, а также скрипт переименования отправляемого файла. Проблема в том, что при переименовании файла теряется его расширение.
Пытался исправить проблему следующим образом

PHP
//Присваивание файлу нового имени
$_FILES["filename"]["name"] = $_POST["fname"];
//Определение нужного расширения для переименованного файла
 
  
if ($_FILES["filename"]["type"] === "video/mpeg")
  {
  
$_FILES["filename"]["name"] = $_FILES["filename"]["name"].".mpeg";
  }
  

  if (
$_FILES["filename"]["type"] === "image/bmp")
  {
  
$_FILES["filename"]["name"] = $_FILES["filename"]["name"].".bmp";
  }
  
  if (
$_FILES["filename"]["type"] === "image/gif")
  {
  
$_FILES["filename"]["name"] = $_FILES["filename"]["name"].".gif";
  }
  
  if (
$_FILES["filename"]["type"] === "image/jpeg")
  {
  
$_FILES["filename"]["name"] = $_FILES["filename"]["name"].".jpeg";
  }
  
  if (
$_FILES["filename"]["type"] === "image/pjeg")
  {
  
$_FILES["filename"]["name"] = $_FILES["filename"]["name"].".jpeg";
  }

  
  if (
$_FILES["filename"]["type"] === "application/pdf")
  {
  
$_FILES["filename"]["name"] = $_FILES["filename"]["name"].".pdf";
  }

  
  if (
$_FILES["filename"]["type"] === "application/msword")
  {
  
$_FILES["filename"]["name"] = $_FILES["filename"]["name"].".doc";
  }
  
  
  if (
$_FILES["filename"]["type"] === "text/html")
  {
  
$_FILES["filename"]["name"] = $_FILES["filename"]["name"].".html";
  }
//Расширение определено


или вот так:
PHP
switch ($_FILES["filename"]["type"])
{
case 
"image/pjeg" :
   
$_FILES["filename"]["name"] = $_FILES["filename"]["name"].".jpeg";
   break;
case 
"text/html":
   
$_FILES["filename"]["name"] = $_FILES["filename"]["name"].".html";
   break;
}


т.е. пытался дописать расширение при помощи сравнения $_FILES["filename"]["type"] с готовыми вариантами. Но у меня не работает ни один, ни другой.
Может кто знает в чем тут ошибка или как подругому реализовать распознавание расширение для файла?



Спустя 38 минут, 26 секунд (20.12.2008 - 20:26) FatCat написал(а):
1. Расширение лучше бы менять, иначе могут загрузить файлик с расширением .php или что похуже. А сопоставление имен делать через БД или через файл лога.

2. Если все же нужно получить расширение, можно попробовать что-то такого типа:
PHP
function get_extension ($file_name)
{
$file_name_arr = explode(".",$file_name);
 foreach($file_name_arr as $file_name_e)
 {
  $file_name = ".".$file_name_e;
 }
 return $file_name;
}

Спустя 54 минуты, 32 секунды (20.12.2008 - 21:20) Sylex написал(а):
Для менеджера файлов я понял все расширения нужны, если нет - можно ограничить.

Получить расширение файла, которое было изначально при загрузке файла:
PHP
$file_ext strrchr(basename($_FILES["filename"]["name"]), '.');


По нему можно проверять доступные, а также проверять MIME-тип.

Спустя 20 часов, 27 минут, 32 секунды (21.12.2008 - 17:48) P i L o T написал(а):
Спасибо всем, особенно Sylex'у за помощь! =) Расширение теперь остается нетронутым.)
Я так понял эта функция обрезает имя файла до точки?


--------------------
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Закрытая темаСоздание новой темыСоздание опроса