За последние 24 часа нас посетили 16765 программистов и 1694 робота. Сейчас ищут 838 программистов ...

Правильное переименовывание файлов

Тема в разделе "PHP для новичков", создана пользователем Winlook38, 19 май 2009.

  1. Winlook38

    Winlook38 Активный пользователь

    С нами с:
    19 май 2009
    Сообщения:
    40
    Симпатии:
    0
    проблема такова. Переименовываю файл, но он переименовывается вместе с расширением. Как оставить расширение на прежнем месте?


    и так строго чтобы в переменной было чтото типо .htm а не text/html ??? :?: :?: :?:
     
  2. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Выдернуть расширение из имени файла и присоединить к новому имени. Расширение является частью имени файла.
     
  3. Winlook38

    Winlook38 Активный пользователь

    С нами с:
    19 май 2009
    Сообщения:
    40
    Симпатии:
    0
    в том то идело что не умею
     
  4. vvsh

    vvsh Активный пользователь

    С нами с:
    19 май 2009
    Сообщения:
    79
    Симпатии:
    0
    Адрес:
    Беларусь, Минск
    у вас есть имя файла? если да, то разбиваете его на название и расширение, $ar = explode(".",$filename);
    $ar[0] - название, $ar[1] - расширение
     
  5. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Так мануал на что! Покури регулярные выражения, строковые функции и научишься.
     
  6. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    vvsh
    А если там пять точек?
     
  7. vvsh

    vvsh Активный пользователь

    С нами с:
    19 май 2009
    Сообщения:
    79
    Симпатии:
    0
    Адрес:
    Беларусь, Минск
    а если 5 то да, ничего не получиться... тогда регулярки
     
  8. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    На самом деле получится. Делаем каунт массива и выбираем последний элемент который и будет расширением =)
     
  9. Winlook38

    Winlook38 Активный пользователь

    С нами с:
    19 май 2009
    Сообщения:
    40
    Симпатии:
    0
    Большое спасибо! особенно если учесть что я в регулярных ноль без палочки, а если за что то засяду разбирать то уйдет ночька! Разве ниукого нет примера???????
     
  10. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Дак регулярку-то написать пара минут :)

    PHP:
    1. <?php
    2.  
    3. if(preg_match('/\.(html|php|js)$/i', 'index.php.html.js.php', $ext)) {
    4.     echo 'newname.'.$ext[1];
    5. }
    6.  
    7. ?>
    8.  
     
  11. Winlook38

    Winlook38 Активный пользователь

    С нами с:
    19 май 2009
    Сообщения:
    40
    Симпатии:
    0
    эээ... лан ща буду разбирать
     
  12. Winlook38

    Winlook38 Активный пользователь

    С нами с:
    19 май 2009
    Сообщения:
    40
    Симпатии:
    0
    rename("files/".$_FILES['uploadfile']['name'], "files/1fgh23.xxx");


    и што куда вставлять?


    rename("files/".$_FILES['uploadfile']['name'], "files/1fgh23.$ext");

    Так чтоли?

    Парни сори у меня совсем туго...
     
  13. Winlook38

    Winlook38 Активный пользователь

    С нами с:
    19 май 2009
    Сообщения:
    40
    Симпатии:
    0
    if(preg_match('/\.(html|php|js)$/i', 'index.php.html.js.php', $ext)) {
    echo 'newname.'.$ext[1];
    }

    rename("files/".$_FILES['uploadfile']['name'], "files/$password.$ext");


    типо так... но получается что файл называется array (расширение) ....
     
  14. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Иногда хочется плакать и лезть на стенку от таких вопросов.
    Вы же видите, ё моё, что у меня написано $ext[1], а не $ext !
     
  15. Winlook38

    Winlook38 Активный пользователь

    С нами с:
    19 май 2009
    Сообщения:
    40
    Симпатии:
    0
    PHP:
    1.  
    2. if(preg_match('/\.(html|php|js)$/i', 'index.php.html.js.php', $ext)) {
    3.      echo 'newname.'.$ext[1];
    4.  }
    5.  
    6. rename("files/".$_FILES['uploadfile']['name'], "files/$password.$ext[1]");



    а почему все начало сохраняться в формате php?)))))



    HTML:
    1. Файл успешно загружен на сервер
    2. Fb4hrti12MZO7LqtU5Cqnewname.php
    3.  
    4. Mime-тип загруженного файла: image/jpeg

    прикольно)) но грустно((
     
  16. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Какое начало?
    Я продемонструровал множественные расширения файлов, а обрабатывается правильное.
     
  17. Winlook38

    Winlook38 Активный пользователь

    С нами с:
    19 май 2009
    Сообщения:
    40
    Симпатии:
    0
    и что мне делать? вставлять свои расширения или как?
     
  18. vital

    vital Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    162
    Симпатии:
    0
    Адрес:
    Минск
    PHP:
    1.  
    2. <?
    3. $arr = explode(".", $filename);
    4. if(count($arr)>2) {
    5. $n = count($arr)-1;
    6. $ext = $arr[$n];
    7. $arr[$n] = "";
    8. $name = join(".", $arr);
    9. }
    10. else {
    11. $ext = $arr[1];
    12. $name = $arr[0];
    13. }
    14.  
    $ext = расширение
    $name = имя
    подставляйте потом куда хотите
     
  19. Winlook38

    Winlook38 Активный пользователь

    С нами с:
    19 май 2009
    Сообщения:
    40
    Симпатии:
    0
    а первый кусок куда подевался?
     
  20. Winlook38

    Winlook38 Активный пользователь

    С нами с:
    19 май 2009
    Сообщения:
    40
    Симпатии:
    0
    дядя не шарю помоги плиз а то я хз что напартачил

    пожаааалуста сделай а то я ваще ноль.....


    PHP:
    1. <?php
    2.  
    3. // Каталог, в который мы будем принимать файл:
    4. $uploaddir = './files/';
    5. $uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
    6. // Копируем файл из каталога для временного хранения файлов:
    7. if (copy($_FILES['uploadfile']['tmp_name'], $uploadfile))
    8. {
    9. echo "<h3>Файл успешно загружен на сервер</h3>";
    10. }
    11. else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }
    12.  
    13.  
    14. // Символы, которые будут использоваться в пароле.
    15. $chars="qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP";
    16. // Количество символов в пароле.
    17. $max=20;
    18. // Определяем количество символов в $chars
    19. $size=StrLen($chars)-1;
    20. // Определяем пустую переменную, в которую и будем записывать символы.
    21. $password=null;
    22. // Создаём пароль.
    23.     while($max--)
    24.     $password.=$chars[rand(0,$size)];
    25. // Выводим созданный пароль.
    26. print "$password";
    27.  
    28.  
    29.  
    30.  
    31.  
    32.  
    33. if(preg_match('/\.(html|php|js)$/i', 'index.php.html.js.php', $ext)) {
    34.      echo 'newname.'.$ext[1];
    35.  }
    36.  
    37. $name = $_FILES['uploadfile']['name'];
    38. $arr = explode(".", $filename);
    39.  if(count($arr)>2) {
    40.  $n = count($arr)-1;
    41.  $ext = $arr[$n];
    42.  $arr[$n] = "";
    43.  $name = join(".", $arr);
    44.  }
    45.  else {
    46.  $ext = $arr[1];
    47.  $name = $arr[0];
    48.  }
    49.  
    50.  
    51.  
    52.  
    53.  
    54. rename("files/".$_FILES['uploadfile']['name'], "files/$password.$ext[1]");
    55.  
    56.  
    57.  
    58.  
    59. echo "<p><b>Mime-тип загруженного файла: ".$_FILES['uploadfile']['type']."</b></p>";
    60.  
    61.  
    62.  
    63.  
    64. ?>
    65.  
     
  21. Winlook38

    Winlook38 Активный пользователь

    С нами с:
    19 май 2009
    Сообщения:
    40
    Симпатии:
    0
    пожаааалуста сделай а то я ваще ноль.....


    PHP:
    1. <?php
    2.  
    3. // Каталог, в который мы будем принимать файл:
    4. $uploaddir = './files/';
    5. $uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
    6. // Копируем файл из каталога для временного хранения файлов:
    7. if (copy($_FILES['uploadfile']['tmp_name'], $uploadfile))
    8. {
    9. echo "<h3>Файл успешно загружен на сервер</h3>";
    10. }
    11. else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }
    12.  
    13.  
    14. // Символы, которые будут использоваться в пароле.
    15. $chars="qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP";
    16. // Количество символов в пароле.
    17. $max=20;
    18. // Определяем количество символов в $chars
    19. $size=StrLen($chars)-1;
    20. // Определяем пустую переменную, в которую и будем записывать символы.
    21. $password=null;
    22. // Создаём пароль.
    23.     while($max--)
    24.     $password.=$chars[rand(0,$size)];
    25. // Выводим созданный пароль.
    26. print "$password";
    27.  
    28.  
    29.  
    30.  
    31.  
    32.  
    33. if(preg_match('/\.(html|php|js)$/i', 'index.php.html.js.php', $ext)) {
    34.      echo 'newname.'.$ext[1];
    35.  }
    36.  
    37. $name = $_FILES['uploadfile']['name'];
    38. $arr = explode(".", $filename);
    39.  if(count($arr)>2) {
    40.  $n = count($arr)-1;
    41.  $ext = $arr[$n];
    42.  $arr[$n] = "";
    43.  $name = join(".", $arr);
    44.  }
    45.  else {
    46.  $ext = $arr[1];
    47.  $name = $arr[0];
    48.  }
    49.  
    50.  
    51.  
    52.  
    53.  
    54. rename("files/".$_FILES['uploadfile']['name'], "files/$password.$ext[1]");
    55.  
    56.  
    57.  
    58.  
    59. echo "<p><b>Mime-тип загруженного файла: ".$_FILES['uploadfile']['type']."</b></p>";
    60.  
    61.  
    62.  
    63.  
    64. ?>
    65.  
     
  22. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Проверьте корректность синтактиса.

    PHP:
    1.  <?php
    2.  
    3.  // Каталог, в который мы будем принимать файл:
    4.  $uploaddir = './files/';
    5.  $uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
    6.  // Копируем файл из каталога для временного хранения файлов:
    7.  if (copy($_FILES['uploadfile']['tmp_name'], $uploadfile))
    8.  {
    9.  echo "<h3>Файл успешно загружен на сервер</h3>";
    10.  }
    11.  else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }
    12.  
    13.  
    14.  // Символы, которые будут использоваться в пароле.
    15.  $chars="qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP";
    16.  // Количество символов в пароле.
    17.  $max=20;
    18.  // Определяем количество символов в $chars
    19.  $size=StrLen($chars)-1;
    20.  // Определяем пустую переменную, в которую и будем записывать символы.
    21.  $password=null;
    22.  // Создаём пароль.
    23.      while($max--)
    24.      $password.=$chars[rand(0,$size)];
    25.  // Выводим созданный пароль.
    26.  print "$password";
    27.  
    28.  
    29.  
    30.  
    31.  
    32.  // Разрешенные расширения (разделяются через | )
    33.  $allowed_extension = 'html|php|js';
    34.  
    35.  if(preg_match('/(\.'.$allowed_extension.')$/i', $_FILES['uploadfile']['name'], $ext)) {
    36.      rename('files/'.$_FILES['uploadfile']['name'], 'files/'.$password.$ext[1]);
    37.      
    38.      echo "<p><b>Mime-тип загруженного файла: ".$_FILES['uploadfile']['type']."</b></p>";
    39.   }
    40.  
    41.  
    42.  
    43.  
    44.  
    45.  
    46.  ?>
    А вообще, можно хороший отделитель написать, с учетом загруженного расширения.
    Сейчас нет времени писать, но думаю разобраться несложно.
     
  23. vital

    vital Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    162
    Симпатии:
    0
    Адрес:
    Минск
    Код (Text):
    1. $name = $_FILES['uploadfile']['name'];
    $filename =
    Код (Text):
    1. rename("files/".$_FILES['uploadfile']['name'], "files/$password.$ext[1]");
    $ext обратите внимание вовсе не массив

    ps
    Hello world! ©
     
  24. vital

    vital Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    162
    Симпатии:
    0
    Адрес:
    Минск
    откуда у вас в последнем варианте скрипта вообще берётся $ext[1]?

    метод тыка пригоден для ремонта жигуля, сдачи тестов по русскому.. но никак не для php

    Hello world! ©
     
  25. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Вы к кому обращаетесь, господин?

    Ыыыы, не шутите так, а то животу больно))