За последние 24 часа нас посетили 15839 программистов и 1550 роботов. Сейчас ищут 947 программистов ...

Формирование ссылок на скачивание. Как быть а данном случае?

Тема в разделе "PHP для новичков", создана пользователем wissem, 12 фев 2019.

  1. wissem

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

    С нами с:
    7 авг 2017
    Сообщения:
    15
    Симпатии:
    1
    Друзья, столкнулся с такой проблемой. Есть ФТП на котором лежат файлы. В папках +- с тремя уровнями вложенности. Написал функцию, которая проходит рекурсивно по папкам и формирует ссылки вида download-handler.php?path="/name of folder/name of subfolder/file_name.ext" Тоесть задача передать ссылку в скрипт, который решит отдать ли этот файл на скачивание или нет, по определенным условиям. Но в именах папок есть пробелы и если делать правильно через urlencode, то получаем ссылку примерно такого вида "download-handler.php?path="%20name%20of%20folder%а20name of subfolder%20file_name.ext", что не совсем подходит при указании в дальнейшем это ссылки для скачивания где-то на другом ресурсе. Как лучше поступить? на многих ресурсах вижу пути к файлам для скачивания вида /34265/876/file_name.ext Как формируются такие ссылки? как-то через базу присваивается айди папки? Где бы почитать или посмотреть пример? Заранее спасибо за ответ.
     
  2. VladislavM

    VladislavM Гость

    С нами с:
    12 фев 2019
    Сообщения:
    2
    Симпатии:
    0
    str_replace('"%20", "/", $string);
    urldecode($string);
     
  3. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Эммм, а если будет реальное название директорий, плохо будет?
    Вместо %20, поставь _
     
    #3 smitt, 12 фев 2019
    Последнее редактирование: 12 фев 2019
    wissem нравится это.
  4. wissem

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

    С нами с:
    7 авг 2017
    Сообщения:
    15
    Симпатии:
    1
    Плохо не будет, если в ссылке передавать as is то в скрипт, который отвечает за выдачу на скачивание, передается строка до первого пробела. Если применять urlencode, то ссылка на скачивание превращается в треш с кучей разных артефактов и указывать это где-то в качестве ссылки на скачивание не хотелось бы. Ставить "_" вариант, но обратная функция преобразования, которая будет в download-handler.php заменит все "_" обратно на " ", а это не вариант, потому что "_" могут быть в именах)
     
  5. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    php нет под рукой, а что будет если в url передать как есть т.е. с пробелами т.е. ?path=name of file
     
  6. wissem

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

    С нами с:
    7 авг 2017
    Сообщения:
    15
    Симпатии:
    1
    Я ж говорю, передается урл до первого пробела :)
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Ну так это правильно, введи в яндексе или гугле строку с пробелами, и посмотри, что будет.
    --- Добавлено ---
    --- Добавлено ---
    Можно %20 заменить на +
     
    wissem нравится это.
  8. wissem

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

    С нами с:
    7 авг 2017
    Сообщения:
    15
    Симпатии:
    1
    Да, я так понимаю, что заменить пробел на + будет приятнее глазу. Есть функция готовая? или тупо str_replace делать и все? а получив url в download-handler c "+" делать обратную замену "+" на " " тем же str_replace?
     
  9. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Ну если ты %20 заменишь на плюсы после urlencode, то php потом сам заменит плюсы на пробелы. Url decode знает, что плюс это пробел. Там только не помню, как с плюсами, если несколько пробелов подряд
     
    wissem нравится это.