ФорумПрограммированиеPHP для идиотов → Перевод названия файла в транслит

Перевод названия файла в транслит

  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 8 апреля 2008 г. 17:03

    Добрый вечер!
    Есть у меня скрипт, который загружает на сервер файлы. И есть функция, которая переводит названия этих файлов в транслит.


    Копирование файла на сервер из временной папки:
    if(copy($_FILES["filename"]["tmp_name"],"../files/".(str_replace(' ', '_', $_FILES["filename"]["name"]))))

    Функцию переписывать не буду, но суть в том что переменные объявляю как аргументы. Перевод самого названия файла получается: encodestring($_FILES["filename"]["name"]). А как это название файла в транслите использовать в процессе его копирования на сервер (выбираем файл русский, а на сервер должен загрузиться этот же файл но с названием на транслите).

    Пробывал переведенное в транслит значение названия файла присвоить переменной, присваиавается, но происходит ошибка из-за того что в результате получается неверный путь для записи файла. т.е. если

    if(copy($_FILES["filename"]["tmp_name"],"../files/".$namefail))

    Путь получается: Название файла($namefail)../files/
    А должно: ../files/Название файла($namefail)

    В чем проблема не понятно. Подскажите пожулуйста.
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 8 апреля 2008 г. 17:25, спустя 21 минуту 58 секунд

    Нифига не понял. Полный код в студию.

    if(copy($_FILES["filename"]["tmp_name"],"../files/".$namefail))

    Путь получается: Название файла($namefail)../files/
    А должно: ../files/Название файла($namefail)

    echo $namefile; что выдает?
    И echo "../files/".$namefail; что?
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 8 апреля 2008 г. 17:40, спустя 15 минут 10 секунд

    Загрузка файла на сервер



    // функция превода текста с кириллицы в траслит

     function encodestring($st)

     {

       
       $st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_",

       "abvgdeeziyklmnoprstufh'iei");

       $st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_",

       "ABVGDEEZIYKLMNOPRSTUFH'IEI");



       $st=strtr($st,

                       array(

                           "ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh",

                           "щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",

                           "Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH",

                           "Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",

                           "ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye"

                           )

                );
     }


    //ПРОВЕРКА


    $p  = "../files/";
    $name_file = $_FILES['filename']['name'];
    $z = encodestring($name_file); //Работает
    $uploadfile = $p.$z;
    echo $uploadfile; // ПЕРЕМЕННЫЕ МЕНЯЮТСЯ МЕСТАМИ

    // Копирование файла из временной папки на сервер

    if(copy($_FILES["filename"]["tmp_name"],"../files/".(str_replace(' ', '_', $_FILES["filename"]["name"])))) //ВСЕ РАБОТАЕТ
      //А еСЛИ ТАК
    if(copy($_FILES["filename"]["tmp_name"],"../files/".$z)) //НЕ РАБОТАЕТ

     
      {
        echo("<p>Файл успешно загружен <br><br>");
        echo("Сейчас Вы будете перенаправленны на предыдущую страницу.<br><br>");
    echo("<b>Характеристики файла:</b> <br>");
        echo("Имя файла: ");
        echo(str_replace(' ', '_', $_FILES["filename"]["name"]));
        echo("<br>Размер файла: ");
        echo($_FILES["filename"]["size"]);
        echo("<br>Тип файла: ");
        echo($_FILES["filename"]["type"]);
     
     
      //ЗАНЕСЕНИЕ ДАННЫХ В БД
     
      $link = '<a href=http://kursovoy/sait/files/'.(str_replace(' ', '_', $_FILES["filename"]["name"])).'>'.$_FILES["filename"]["name"].'</a>';

    $query = "INSERT INTO lessons VALUES (null, '$department', '$kurs', '$lesson', '$link')";
    $result = mysql_query($query);

      }
      else
      {
         echo("Ошибка загрузки файла");
      } ?>



    В случае использования функции перевода ошибку выдает на строке где копируется файл из временной папки на сервер.
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 8 апреля 2008 г. 18:24, спустя 44 минуты 40 секунд

    Где return в функции?
    Что выдает var_dump ($z); ?
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 9 апреля 2008 г. 8:35, спустя 14 часов 10 минут 23 секунды

    Ну вот encodestring($name_file). Если я не ошибаюсь в том случае если значения переменных объявляются как аргументы ретурн не нужен
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 9 апреля 2008 г. 10:26, спустя 1 час 50 минут 54 секунды


    Где return в функции?
    Что выдает var_dump ($z); ?


    Да ты прав был. С ретурном все ок. Спасибо.
  • Animator

    Сообщения: 194 Репутация: N Группа: Кто попало

    Spritz 15 апреля 2008 г. 16:00, спустя 6 дней 5 часов 33 минуты

    решил не открывать новый топик, спрошу здесь. здесь http://php.ru/manual/features.file-upload.html нашел пример загрузки картинок на сервер. но так и не смог найти где и как при загрузке менять название файла.



    $uploaddir = '/home/public_html/test/';
    $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

    print "<pre>";
    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    print "File is valid, and was successfully uploaded. ";
    print "Here's some more debugging info:\n";
    print_r($_FILES);
    } else {
    print "Possible file upload attack! Here's some debugging info:\n";
    print "Possible file upload attack! Дополнительная отладочная информация:\n";
    print_r($_FILES);
    }
    print "</pre>";


    тоесть как бы не назывался файл на сервер что бы он залился как 1.jpg например
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 15 апреля 2008 г. 16:13, спустя 13 минут 19 секунд

    Второй параметр функции move_uploaded_file.
    Совсем не обязательно его вычислять так извращенно как в этом примере.
    Пропиши руками, что тебе надо туда.

    И вообще, какой идиот придумал определять директорию для загрузки картинок абсолютным путем?
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 15 апреля 2008 г. 16:21, спустя 7 минут 53 секунды

    Алекс вышел на тропу войны и устраивает разнос всем и вся ;)
    Ну вобще правильно. А то расслабились все.
    from TRIAL with LOVE
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 15 апреля 2008 г. 16:24, спустя 3 минуты 31 секунду

    в том числе и ты, иди книгу покупай
    все умрут, а я изумруд
  • Animator

    Сообщения: 194 Репутация: N Группа: Кто попало

    Spritz 15 апреля 2008 г. 16:28, спустя 3 минуты 56 секунд


    Второй параметр функции move_uploaded_file.
    Совсем не обязательно его вычислять так извращенно как в этом примере.
    Пропиши руками, что тебе надо туда.


    тоесть move_uploaded_file($_FILES['userfile']['tmp_name'], '1.jpg') ???


    И вообще, какой идиот придумал определять директорию для загрузки картинок абсолютным путем?


    подскажи как лучше. просто я взял за образец то что нашел, вот и вожусь сним
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 15 апреля 2008 г. 16:35, спустя 7 минут



    Второй параметр функции move_uploaded_file.
    Совсем не обязательно его вычислять так извращенно как в этом примере.
    Пропиши руками, что тебе надо туда.


    тоесть move_uploaded_file($_FILES['userfile']['tmp_name'], '1.jpg') ???

    ну попробуй…

    там же, где ты взял этот пример там все про это написано
    все умрут, а я изумруд
  • Animator

    Сообщения: 194 Репутация: N Группа: Кто попало

    Spritz 15 апреля 2008 г. 16:58, спустя 23 минуты 1 секунду

    получилось, но только так:

    $uploaddir = '/home/ibertechg/domains/ibertech.ge/public_html/test/';
    $blin = $row_Recordset1['image_id']+1 . '.jpg';
    $uploadfile = $uploaddir . $blin;


    там же, где ты взял этот пример там все про это написано


    про абсолютный и относительный путь я там ничего не нашел…
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 15 апреля 2008 г. 17:01, спустя 2 минуты 43 секунды

    Ты вобще не знаешь что такое относительный а что такое абсолютный путь? Или ты не знаешь как это применить для данного скрипта?
    from TRIAL with LOVE
  • Animator

    Сообщения: 194 Репутация: N Группа: Кто попало

    Spritz 15 апреля 2008 г. 17:09, спустя 7 минут 55 секунд

    как применить для данного скрипта

Пожалуйста, авторизуйтесь, чтобы написать комментарий!