За последние 24 часа нас посетили 17937 программистов и 1741 робот. Сейчас ищут 963 программиста ...

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

Тема в разделе "PHP для новичков", создана пользователем borus, 4 дек 2015.

  1. borus

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

    С нами с:
    16 апр 2012
    Сообщения:
    161
    Симпатии:
    0
    Здравствуйте!

    Дело происходит на локальном сервере XAMPP.
    Есть php страница cо следующим кодом:
    Код (PHP):
    1. <?php 
    2. ini_set("max_execution_time", "600");
    3. function select_file($folder,$picture){
    4.     $fp=opendir($folder);
    5.     while (false !== ($cv_file = readdir($fp))) { 
    6.     ...
    7.     }
    8.     closedir($fp);
    9.     fclose($log);
    10. }
    11. ?>
    12. <!DOCTYPE html>
    13. <html>
    14. <head>
    15. <meta charset="utf-8">
    16. <title>Отбор файлов по списку названий из csv файла</title>
    17. </head>
    18. <body>
    19. <p>Введите файл:</p>
    20. <form enctype="multipart/form-data" method="POST" >
    21. <input type="file" name="userfile">
    22. <input type="submit" value="Отобрать картинки!">
    23. </form>
    24. <?php 
    25. if(isset ($_FILES['userfile'])){
    26.     $fn = $_FILES["userfile"]["tmp_name"];
    27.     $fd = fopen($fn,  "r"); 
    28.     while (!feof($fd)){
    29.         $fields = fgetcsv($fd);
    30.         select_file("photo", $fields[0]);
    31.     }
    32. }
    33. ?>
    34. </body>
    35. </html>
    До тех пор пока я обращался к папке "photo", которая лежала в той же папке, что и исполняемый php файл, все работало. Когда же потребовалось шерстить папку на другом логическом диске, и я подставил вместо
    select_file("photo", $fields[0]);
    select_file("D:\Общая\База обработанных фотографий", $fields[0]);
    страница по клику на кнопку отобрать стала бесконечно висеть и стали выкидываться сообщения вида:
    Warning: opendir(D:\Общая\База обработанных фотографий,D:\Общая\База обработанных фотографий): in C:\xampp_new\htdocs\selectfoto\select_files.php on line 5
    Warning: opendir(D:\Общая\База обработанных фотографий): failed to open dir: No such file or directory in C:\xampp_new\htdocs\selectfoto\select_files.php on line 5
    и ниже бесконечное число предупреждений вида
    Warning: readdir() expects parameter 1 to be resource, boolean given in C:\xampp_new\htdocs\selectfoto\select_files.php on line 6

    Скажите, можно ли скрипт заставить открывать папку с другого логического диска и как это сделать?

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    обратный слэшей больше или на прямые заменить пробовал?
     
  3. borus

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

    С нами с:
    16 апр 2012
    Сообщения:
    161
    Симпатии:
    0
    я пробовал с такими путями:
    D:\Общая\База обработанных фотографий\\
    D:\Общая\База обработанных фотографий\
    D:/Общая/База обработанных фотографий
    D:/Общая/База обработанных фотографий/

    Вы что-то другое имели в виду?
     
  4. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    \ экранирует следующий за ним символ. основы пхп да и много чего ещё. да, винда это одно большое исключение из мира осей поэтому бэкслэш там как разделитель путей.
    чтоб написать в строке обратный слэш надо его же и экранировать - \\
    похоже на правду но почему только в конце?
    еще кстати возникла идея непредсказуемости кодировки - файл (и как следствие строки в нем) в одной, файловая система в другой.
     
  5. borus

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

    С нами с:
    16 апр 2012
    Сообщения:
    161
    Симпатии:
    0
    Спасибо! Видимо это и было проблемой. Когда я подставил строку вида
    D:\baza_foto
    все заработало
    Вопрос теперь, как привести кодировки в соответствие друг другу? наверно лучше в винде поменять. Файл в utf-8. Windows 8.1
     
  6. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    сделать симлинки с латинскими именами и их кормить пыху - точно проблем не будет.